Just implement automatic/universal voter registration and throw out any votes that don't match up against the voter database (deceased, multiple votes per person, etc).
Oh wait, that would make voting easier and lead to tens of millions of more people voting. Can't have that right?
So you would throw out the valid vote along with the invalid one?
How do you determine which one was valid?
My point is precisely you can't tell which belongs to the real voter if you have two voters come in under the same name. So if you are throwing out votes after the fact, you are going to throw away a valid vote. Or the first person using that name gets to vote, and the other can't because he's listed as having already voted. And this problem is not only fraud but also mistakes by poll workers checking the wrong name if two are similar. I'm not sure of the solution, but throwing out a valid vote or two because there was a mistake or an invalid vote connected to it isn't it.