The only thing that would make internet voting a good idea is if a distinct, verifiable paper trail was created from the votes that could be used for a recount, which prompts the question as to why we shouldn't just go with the paper format to begin with. Asking the manufacturers for the source code wouldn't work because they could just provide an innocent version and then change it.
Paper trails don't work either. I can easily write a programme that will send one set of data and print/display a different set. All they need to do is that and use a randomizer to change 1 in every x (x being a large random number) votes to canidate y. The only way they could verify would be to go ask ever single person (which means the ballots couldn't be anonymous).