I think when it comes to asking a good question, it's always good to think back to the Five W's and H, which you may or may not have heard of before.
What - What are you trying to do and what's happening? What's supposed to happen?
Who - Who does it affect? (e.g problem may occur on client PC only, but works fine for you)
When - When does the problem happen? (e.g Only when you run X after doing Y )
Where - In what environment does it happen on? (e.g Win 8, but works fine on Win 7 and below)
Why & How - This is the answerer's main responsibility, but you can always provide information about why you think it's happening because it shows us that you're thinking and have tried to solve it yourself.
Add on to this your research/code and you should be good to go. When you have all this info, it gives us the ability to understand your whole situation and potentially reproduce the problem. Makes life easier for answerers and gets you quicker answers!