Could blockchain technology be used to implement a verifiable voting system? From an efficiency point of view, voting at elections online seems to make a lot of sense except that there is currently no way to have a completely trustable electronic voting system because of the lack of the ability to verify it, e.g. source code, transactions matching input, etc.

Blockchains seem like they could provide this function, but I've probably missed details – what are they?

Remember, this is in the context of national voting system where nations stick to paper based voting because they have no other way to verify and audit the accuracy of the vote.
Blockchain voting could be done easily. Each citizen could send an amount of bitcoin (say, 0.1mBTC) to the addresses of their favorite candidate address. 
One obvious problem is that anybody could vote. A trusted third party could set up a site where each citizen gives his bitcoin address with his id number. There would be a window to give everyone a chance to vote (and, if one wishes to, change it).
After voting, the trusted third party could check the blockchain for the last transaction each citizen made.
We would still have to trust this party in counting valid votes, because presumably, it would be the only one with access to the database.
The database could be available once the election is over to allow complete transparency, but then, voting wouldn't be private anymore.
Furthermore, currently at 1MB per block capacity on the bitcoin blockchain makes voting on it a very big challange if not impossible.