- Was the answer correct?
- Was the answer complete?
- Was the answer carefully explained (for example a description or explanation provided, rather than simply a code or documentation reference)?
- Was the answer unique (that is, did the answer add information not present in any other responses)?
The first one is mandatory (at least for objective questions, where there is a correct answer); any combination of the others are good, the more the better.
Additionally, perhaps, for the really high-ranking responses:
- Did the answer provoke debate or further discussion?
- Did the answer contribute knowledge or ideas not previously published?
And, depending on the fickle demeanor of the community that day:
- Was the answer funny, particularly in some manner universally recognized by the geek culture?
How stringent I am at applying these criteria generally depends on the quality and difficulty of the answer. If it is a trivial question with a fairly trivial answer, I may not upvote any response, or only upvote the best answer of all. If it is a difficult question, particularly involving answers from multiple people to put together different parts of the puzzle, I might upvote everyone.
I generally don't downvote answers unless they are either:
- outright incorrect, or
- a direct duplicate of an earlier response (with no improvement in phrasing or additional references provided)
...but perhaps you are saving an "Etiquette for downvoting" question for tomorrow. :)