We could do that with open source software, commodity PCs and card punch machines and readers.
Then validating that your choices were encoded correctly would be easier. So would counting.
You could count at the voting location to get fast results and recount once the ballots arrive at the central office to confirm that the reported count was correct.
You could keep the initial counts at the polling place. Then later compare those numbers with the second count's to confirm that nothing happened to the ballots.
You also should have a unique number on each ballot that you can later use to look up how your ballot was recorded.
None of this should require advanced technology, new inventions or secrecy.