instant runoff voting is a pretty cool idea.

As for third parties, it’s really another dynamic–the fact that voting your third-party favorite ends up helping the guy you hate the most. This can be fixed with instant runoff voting: You pick your first choice, second, third, etc. Count up all the first-choice votes. If no one gets over 50%, eliminate the candidate with the least, take all the people who voted for him as first-choice, and count their second-choice votes. Continue until one candidate has over 50%.