How to write a good MathOverflow question
Using MathOverflow should be an extension of the way you normally do mathematics, and the same rules you use to effectively solve problems can be used to make good MO questions. Just like solving problems, crafting good questions requires you to put in some effort!
 Ask a focused question that has a specific goal
 Be precise
 Do your homework
 Break it down
 Consider different formulations of the question
 Provide background and motivation
 Make your title your question
 Format your question well
 Additional resources
Ask a focused question that has a specific goal
It should be absolutely clear what constitutes an answer to your question. Here are some examples of vague and specific questions. For each one, ask yourself, "If I saw an answer to this question, could I confidently determine whether it tells the asker what she actually wants to know?"
Too vague/broad  Focused 
What can I deduce from X?  Does X imply Y? 
Is there an example of X such that Y?  
What is known about the X conjecture?  Is the X conjecture true in situation Y? 
What are all the ways to do X?  Is there a way to do X other than Y (which I can't use because Z)? 
Tell me about elliptic curves. 
Note that being specific does not mean plugging in specific numbers or otherwise making your problem look like an exercise in a book. It means asking a tothepoint question that has an answer.
If you can't turn your question into a specific one, ask yourself what you hope to gain by asking the question. What concrete goal are you moving towards? If you can't think of one, then please don't ask the question. If you just want to know more about some area, read a book or an article or the Wikipedia page or Google for it. Either you'll learn about the subject effortlessly, or at some point you'll get stuck on some very concrete thing. If the former happens, good for you! If the latter happens, then the MathOverflow community is here to help you get unstuck. If you have a concrete goal, but your question is extremely broad, break it down into more focused questions.
Be precise
Being precise means communicating the parameters of your question so that others know where to start answering it and know when they've given you a complete answer. Of course, the includes stating the hypotheses and goal of your problem. If you suspect that you're asking an elementary question outside of your field, you may also want to explain your background a bit. This makes it easier for the person answering your question to know what she can take for granted.
It is especially important for "soft" questions and "big list" questions to be precise. Otherwise they'll be boring and useless. "What are the best number theory books" is a bad question. Best for what? Assuming what background? A better version of the question might be "What are the best textbooks for an undergraduate number theory course?" or "After an undergraduate number theory course, what should I learn if I want to study elliptic curve cryptography?" These questions aren't great, but they make it clear what the starting point is and what the goal is.
Make sure it's clear exactly what your question is. It's extremely frustrating to read a long question which explains what the general problem is but doesn't contain an actual question. I usually resort to searching the body of the post for question marks, but it often doesn't help. After defining all your terms and motivating your question, consider visually distinguishing the final version of the question (see the formatting section).
There are few things worse than a question which is too vague, too broad, or imprecise. Not only is it lazy to ask a vague or imprecise question, it's also rude. You're essentially asking somebody to do the work of figuring out what you want to ask, and then answer it, or to answer several possible interpretations of your question. Suppose somebody asks, "What do you guys think about Foobar's new paper?" Even if this is exactly in my field, and I understand Foobar's paper better than Foobar himself, I have no idea where to start answering a question like that. Compare to, "Does Foobar's regularization construction solve the BazFlipt Conjecture?" As an expert, this is something I can actually answer.
When you're browsing MO, please don't vote up unfocused or imprecise questions. Such questions are as bad as (or worse than) homework questions; they waste everybody's time. If somebody asks, "What's the deal with algebraic geometry?" you might say to yourself, "Wow, I'd really love to see a great answer to that one. I'm going to vote it up." But don't! You're encouraging the wrong behavior. The great answer you're hoping for doesn't exist because there isn't a precise question. At best, somebody will answer, "go read a survey article or a standard reference or the nLab page or the Wikipedia page." Worse, somebody who is too kind and too generous with her time may spend a great deal of time and energy crafting an answer that might not satisfy the asker and that will be just a shadow of a proper survey paper. Such questions can't be reasonably answered in a few hours, even by an expert who knows the "answer."
Do your homework
Before asking your question, try to solve it. Search Google, Wikipedia, and nLab, check any references you can think of, and try to figure the problem out yourself (maybe even sleep on it). Doing so will help you break the problem down and understand it better. Even if you don't solve the problem, putting some work into it will often help you understand exactly what it is you're having trouble with, so you'll be able to ask a better question.
Break it down
You may have a specific problem you're trying to solve, and you may have done your research, but the problem might be a monster. Even if it's not a monster, you'll probably benefit from trying to break the problem into smaller pieces and posting one or two of the pieces on MO. To modify a quotation of Pólya, "If there is a problem you can't solve, then there is an easier problem you can't solve: find it." You may worry that the the pieces are not interesting enough or are too specific to post on MathOverflow, but you shouldn't. It's much better to post a question that is too focused than to post a question that is too vague or too broad.
It's okay to ask several questions related to a project you're working on, but try to limit yourself to one or two per day. Rather than posting all the parts of your problem at the same time, work through them one at a time. After all, the solution to one part may completely change your plan for solving the problem.
Consider different formulations of the question
Sometimes your question is boring, but you can often make it much more interesting by recontextualizing it.
It could be enough to just ask if your question is false. For example, you might be reading a book when you come across "Theorem 2.1. Every regular doodad is a widgit." You read the proof, but you don't understand where it uses the hypothesis that the doodad is regular. Your question is "Where does the author of this book use the regularity hypothesis in Theorem 2.1?" That is a boring question! But answering it is equivalent to answering an interesting question, "Is every doodad a widgit?" That is, does the result remain true if you remove (or weaken) the hypothesis? Ask the more interesting question, and add "I ask because I'm reading the proof of Theorem 2.1 of this book, which shows that regular doodads are widgits, but it looks like it doesn't use the regularity hypothesis."
Another thing you could try is to broaden the appeal of your question by generalizing it. Generalizing is actually a way of breaking the question down, since it amounts to removing hypotheses. For example, you might be trying to prove that some particular object X is a widgit. Asking "Is X a widgit?" might not be a very interesting question. So you do your homework by looking for references and by trying to prove it in various ways. Eventually, you realize that the basic property of X that should force it to be a widgit is that it is a doodad, so you ask yourself, "Is every doodad a widgit?" Of course not; it's easy to come up with doodads that aren't widgits. There must be some other property of X that will allow you to prove it's a widgit. Maybe it's because X is a regular doodad. After thinking about it for a while, you think that it's plausible that every regular doodad is a widgit. If you can't come up with a proof or a counterexample, then you could ask, "Is every regular doodad a widgit?" If you do, you may want to explain in a background/motivation section that you're really trying to show that X is a widgit.
Provide background and motivation
MathOverflow isn't just a place to ask and answer questions. It's also a place to read questions and answers, which is a great way to see what people in other fields think about, and to see how they actually think about it (not just what the polished papers look like). So when you ask for the help of those who know more than you, please also extend a hand to those who know less than you by explaining why you are asking the question. You'll get more votes, generate more interest, and are more likely to get your question answered. Explaining the motivation for a question may also help you gain a fresh outlook on the topic you're asking about. MO is meant to develop your ability to do mathematics, but also to develop your ability to communicate it.
Make your title your question
Use your title to convey as much information about your question as possible. Since the tags already convey the general subject area of your question, the title should communicate the question itself as faithfully as possible. If necessary, leave out hypotheses in the title, and in the body of the question, explain why the question requires those hypotheses.
Don't be afraid to make your question title long. Titles are allowed to be anywhere from 15 to 250 characters long. 140 characters (the length of a tweet) takes up about two full lines on the home page, so try to keep it less than that. But 140 characters is a lot longer than you might think. Too many people restrict themselves to 20 character titles. They're trying not to waste your time by making you read a long title, but they end up wasting more of your time because you have to actually open the question to see if it's interesting to you.
Format your question well
The readability of your question can often be greatly improved if you learn to use formatting commands, especially if your question ends up being quite long. Here is an example that contains a few good uses of the formatting commands:
## Background/Motivation ## A *doodad* is a thingumabob together with a sheaf of doohickies (which is usually called the *doo structure* on the doodad). A doodad is said to be *regular* if the sheaf of doohickies is regular. Intuitively, regularity makes a doodad "rigid" since information about the doo structure at a point can be translated into information about the doo structure at nearby points. A *widgit* is a whatsit which is flat (in the sense that its Plotsky curvature is zero). Showing that a space has a widgit on it is extremely useful because the flatness allows you to apply Foobar's gadget construction to prove many useful results about the space.  Based on the above intuition, it is natural to ask if every doodad is a widgit. However, the answer is clearly no, since a widgit is always regular, but [some example] is a nonregular doodad, so it is clear that we must impose a regularity hypothesis. > Is every regular doodad a widgit? 
Background/MotivationA doodad is a thingumabob together with a sheaf of doohickies (which is usually called the doo structure on the doodad). A doodad is said to be regular if the sheaf of doohickies is regular. Intuitively, regularity makes a doodad "rigid" since information about the doo structure at a point can be translated into information about the doo structure at nearby points. A widgit is a whatsit which is flat (in the sense that its Plotsky curvature is zero). Showing that a space has a widgit on it is extremely useful because the flatness allows you to apply Foobar's gadget construction to prove many useful results about the space. Based on the above intuition, it is natural to ask if every doodad is a widgit. However, the answer is clearly no, since a widgit is always regular, but [some example] is a nonregular doodad, so it is clear that we must impose a regularity hypothesis.

Notice that the background/motivation is clearly labelled with a section header and clearly delimited by the horizontal rule, making it easy for experts to know what to skip or skim. The words being defined are italicized. After the nuances about why the question introduces some hypotheses, the precise final question is visually distinguished in a blockquote, making it easy to know exactly what constitutes an answer to the question.
A final note
Not every piece of advice on this page may apply to your problem, and it may even occasionally happen that you can make your question better by violating some rule laid out on this page. As with any writing you do, it is important to know what the basic rules are. If you violate one of them, it should be a conscious choice and you should be doing it for a very good reason.
Additional resources
 Eric Raymond's How To Ask Questions The Smart Way is directed at people looking to post problems to computer software/hardware forums, but much of the advice applies to asking questions on MathOverflow as well.