At least a mail-in ballot usually has a "receipt," (that serial number thing that's torn off at the top/bottom) although it does little to show or prove a vote was counted, especially with the subjectiveness of interpreting handwritten marks. The bigger problem is electronic voting has no real records making it far easier to manipulate because there's nothing permanent to recount.
I suggest that to solve the receipt issue, privacy, speed of counting and accuracy to the best degree available, it's best to:
0. Make voting day a national holiday.
1. Mail every voter a durable, physical RFID token (signed by a closely-held private key) that has an unique code that is not recorded who it is given to. If they haven't received one before voting in-person, they can receive a random token.
2. The voter is first checked to make sure they haven't yet voted by keeping a database of "has voted"... completely independent of actual votes.
3. The voter either drops-off the RFID in a container in a booth for their vote preference, or they mail it sealed in two envelopes (outer mailing info, inner vote preference).
4. Votes are counted both by weight and by RFID scanning (whole containers of votes are scanned in batch) for redundancy.
5. Voters can check online in real-time if their vote was counted by searching for the RFID code they used.
6. Recounts are a matter of mass-scanning large containers (with appropriate chain-of-custody) of votes.
7. Tokens are reused to reduce waste.