In stead we should have a form of runoff election. It wouldn't be a true run off election, as people would not want to go back and vote again. While I hate the analogy, as it sounds like selling votes, but sort of an auction.
If one canidate got over 50% of the vote, (s)he wins. If none can do that you go into a psuedo run-off.
Rather than voting for one canidate you would rate them. You favorite getting a 1. Next favorite geting a 2. And on down.
The first run off round, you would remove the half canidates that got the least votes, rounding down (so is there where three, just the lowest ranking one would be removed).
Let's say you are a Nader fan so your ballot would look like:
If Nader was removed from the first runoff, the Kerry would get the persons vote. And you just whittle the canidates down till one remains.
This would mean you could vote you conscience and not feel you were throwing your vote away, and The second place person couldn't blame an indepent for stealing their election.
Plus this voting system is scalable, so you could manage something more than a two party system.
And as long as Diebold systems aren't doing the math, the results should be accurate.
And most importantly, I wouldn't have to listen to news reports every morning about legal battles over whether Nader can run or not.
A win-win situation.