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?
You'd throw out just the illegitimate votes. Determining which is legitimate is the issue.
It'd be easy for electronic voting as you could check/control the source of the vote (only one vote is allowed per authorized voter account and only the unique voter could log into their account).
For postal voting you could rely on signatures and more data like printing a unique number/watermark on each letter (or the ballot itself) which is linked to the voter getting the postal ballot and then throw out any postal ballots coming back from that supposed voter with a different number/watermark than the one the elections office sent out to that specific voter.
For in-person voting, I'm not really sure how you'd deal with multiple votes per person on the back end. Aside from contacting the voter to confirm, I'm thinking you could use a system where the ballot is printed on-site with only one printing allowed per voter and the ballot includes a unique number/watermark like the one above for verification purposes but that seems like it would take a lot of time.
How do in-person voting systems currently deal with multiple votes per person?
edit: typo (voters -> votes)