I don't have a clean solution but have put a fair amount of thought into this question, which I'll try and summarize here.
The term "Bitcoin-based" could have different meanings. It could mean (1) using Bitcoin exclusively, (2) using Bitcoin as black box to provide some functionality to augment some other voting protocol, or (liberally) (3) using the same cryptographic toolset as Bitcoin without using Bitcoin itself explicitly. I'll deal with the cases in order (3), (1), and (2).
Using Bitcoin's Toolset
Let me start with (3): using the Bitcoin toolbox. There is a lot of promise to the idea of applying cryptography to voting. In fact, there is a large shared history between digital cash and cryptographic voting, including the origins of both in cryptographer David Chaum and many shared primitives developed over the past few decades. This is the most promising in my opinion but also the least interesting to Bitcoin enthusiasts, so I won't say much more about it here. I do try to summarize the current state of cryptographic voting over on Security.SE.
Using (Almost) Exclusively Bitcoin
In terms of (1), as most of the answers so far point out, governmental voting requires some control over identity to ensure that only eligible voters vote and that they only vote once. This needs to be held in contrast with the right to a secret ballot.
It would be possible for the government to maintain a roster of voters with each eligible voter's name, accompanied by an encryption of their Bitcoin public key. Each candidate could set up an account and you could vote by moving a specified amount to the candidate (if the candidates are trustworthy, they can immediately return the money to you). When the election is over, the blockchain is parsed to count the unique addresses sending money to each of the candidates.
To make sure voters are eligible takes a little work (done outside of Bitcoin): the encrypted public keys from the roster are cryptographically shuffled (this anonymizes the list so you lose track of which encrypted key corresponds to which registered voter). The accounts who cast votes are encrypted (along with their choice of candidate) and also cryptographically shuffled. The election authority can then compare the encrypted signing key of each registered voter with the encrypted singing key of each voter who submitted a vote. This is done under encryption (using a "plaintext equality test"). Only when there is a match between the two lists is the vote actually counted. For each step, the EA publishes a publicly verifiable proof demonstrating it is done correctly.
If a voter is coerced or wants to sell their vote (while not actually selling it), they just make up a new bitcoin account and vote from it, knowing the vote will be discarded because it is not the account they registered (and no one can tell, because the account they registered is under encryption, and votes are only checked for registration after shuffling/anonymization).
This all is a fairly direct translation of an existing system, JCJ / Civitas, to Bitcoin.
Using Bitcoin as a Primitive
In the above example, we didn't use Bitcoin exclusively but it still featured fairly prominently. We could instead use a smaller piece of what Bitcoin provides. For example, the blockchain is an excellent append-only broadcast channel with timestamping and "carbon-dating." Many cryptographic voting systems (nearly all of them) use a primitive like this which is typically called a "bulletin board."
A bulletin board is a place to post encrypted values and proofs that encrypted values are processed in the correct way to produce the tally.
The idea of CommitCoin (mentioned in another answer; disclaimer: I'm an inventor of it) is to use Bitcoin to provide a bulletin board service. The heavy lifting is done by the Scantegrity cryptographic voting system.