Some of my recent questions have gotten more than a few good and highly upvoted answers. How do I decide which one to accept?
James said simply pick the best answer. Which is true in a way, but doesn't really help in deciding which answer is "best".
Note that the help center article on what accepting an answer means states (in part, my emphasis):
Accepting an answer is not meant to be a definitive and final statement indicating that the question has now been answered perfectly. It simply means that the author received an answer that worked for him or her personally, but not every user comes back to accept an answer, and of those who do, they may not change the accepted answer if a newer, better answer comes along later.
It follows from this that you should accept the answer that most helped you solve your specific problem.
That may or may not be the same as the answer that has been voted the highest by the community. I find that the most highly voted few answers often are good candidates for acceptance, but not always.
If you are a newcomer to a field, a highly technical answer might be voted highly for completeness and accuracy, but it might not be the one that is the most helpful to you. In that case, you should accept another. You can get answers better suited to your level in the field in question by stating what your approximate knowledge level in the field is (something like "I am an amateur astronomer and have some idea of the different star types, but couldn't tell the difference between a G5Ib and a G5IV if it bit me in the rear" will help answerers aim at your particular level of expertise, increasing the chances that you receive answers that are useful to you).
In the end, it is your choice as the person asking a question which answer, if indeed any at all, you should accept. If an even better answer comes along, it is also your right as the asker of a question to unaccept a previous accepted answer and accept the better one. Answer acceptance is not cast in stone.
I would also strongly urge waiting for a while before accepting an answer. Accepting indicates that you feel the question has been answered to your satisfaction, and thus reduces the likelihood of other members of the community chiming in and adding further answers which may be even better for you. I suggest waiting at least 1-2 days before accepting an answer, and longer if the question doesn't see a lot of traffic. Never feel forced to accept an answer, but by all means be ready to upvote good ones.
Along with acceptance, you should upvote answers that you receive which you feel are helpful. (I'm always a bit confused personally when someone with reputation to vote up accepts an answer but doesn't upvote it. Was it useful or not? The two actions are separate, but still very much related.)
(Oh, and every now and then someone suggests the ability for moderators (or others) to force-accept an answer if the asker doesn't. It gets shot down every time, for example here, here and here. So don't even bother to ask about something like that.)
You simply need to select the one that Best answers your question. Look for completeness and accuracy.
If you find that the answers are quite different and yet equally valuable its probably a good sign that you could have narrowed down your question a bit more before asking. Which is something to keep in mind for the next question you ask.