I don't quite get this. You say this:
There would be a public record showing the name of each voter and the public key that is linked to them. The public key is provided by the voter themselves, so they can be certain that only they have the private key for it.
So if the public record (which I assume is the blockchain) has the names, who gets to put the names on it? It sounds like it would require some central agency.
If that's not how it works, and there is no central authority, what's stopping an individual from "registering" several times and casting multiple votes?