There are ways around this on BTC that do not require protocol changes. For example, you can use a coin mixing service like whirlpool to essentially `wash` your BTC. However, this solution is incomplete unless everyone agrees to use it and in doing so `taint` their own BTC supply.
> "If we are all using stolen BTC then none of us are."
The proper way to fix this is with a protocol change as mindslight said. This already exists in a half-way form called ZChash. This is a fork of the BTC blockchain that updates to protocol to allow for `shielded` transactions. These protect anonymity and, I believe, transaction amount as well.
However, ZChash only gives the option to perform a `shielded` transaction. Most transactions on the ZCash blockchain do not utilize this function since it is slower than a standard BTC transaction.
The actual proper implementation of `shielded` transactions that I know of is called PirateChain.