One consequence of the distributed nature of Bitcoin's transaction history is that all payments sent from one Bitcoin wallet can be linked to a single identity, so if your identity becomes known to be behind a single one of your transactions, then a lot could be uncovered about your other transactions, like how much you've spent (which could possibly give people a rough estimate of what your income is), and very likely who you've sent Bitcoin to.
These visualizations of bitcoin transactions demonstrate how traceable transactions are to a single identity:http://anonymity-in-bitcoin.blogspot.com/2011/07/bitcoin-is-not-anonymous.html
This is obviously a big privacy problem. One way to over-come this is to use e-wallet services, which as Jon Matonis notes, eliminates the trace ability of Bitcoin transactions through the use of off-the-grid offsetting:http://www.snell-pym.org.uk/archives/2011/05/12/bitcoin-security/#comments
Another possible route to protecting privacy is for an individual to have multiple Bitcoin wallets, and confine sensitive transactions that they don't want to be publicly known to a wallet which does not involve any transactions that are publicly linked to their identity. If a GUI is developed that allows for easy switching from using one wallet to another, this approach could become practical.
This is still not ideal though, as one can never ensure that their being party to a particular transaction won't become publicized, and therefore give away their involvement in all the other transactions conducted with the same wallet, so it seems like e-wallets are the only relatively secure way to protect one's identity.
Any ideas/thoughts on the matter? Are e-wallets the only practical way to protect one's privacy while using Bitcoins?
*Edit, added pictures