I just saw this great talk by Michael Shamos detailing an investigation (that he was part of) into 18000 undervotes in the 2006 election in Florida.
Although I couldn't stay for the whole talk, it looks like there were fairly substantial HCI problems, in terms of the ballot design. When Shamos showed the actual ballot screen in question, I actually didn't see that there were two separate races being shown. The race at the top of the screen was the one that had the huge number of undervotes, but was visually overshadowed by the second race, which had a larger header and had more people running. Of course, the button to go to the next screen is right under the second race, so I could see how people could have easily missed the race that is currently in dispute.
It strikes me that we really need a single ballot design, one that can be massively user tested to ensure usability and understandability. A key problem, though, is that ballots and voting machines are done on a local basis rather than on a national scale, meaning that it would be very difficult to have any improvements translate into practice.
Or as Reagan would have said, the solutions are simple but not easy.
A copy of the full report is available here.