I think all of the above sounds good, although I think voting needs to be verifiable in some way. Perhaps each person could be given a voter_id that would be created when they submitted the vote. The results would show that a particular voter_id voted, but the published results wouldn't show names, just voter_ids?
That of course would require an application to do it.