Explain how CoinJoin enhances anonymity, in plain English? I just learned about CoinJoin, but I don't really understand all the jargon being thrown around. Can someone explain how this works where a 10-year-old can understand?
Alice wants to transfer 1 BTC from address A to address B

Bob wants to transfer 1 BTC from address C to address D

CoinJoin gives them a way to combine their transfers into a single transaction that has two inputs (A and C) and two outputs (B and D). Someone observing the blockchain no longer knows which one of the outputs is Alice's and which one is Bob's. 

Because of some cryptographic magic behind the scenes, the participants of the shared transaction (there can be more than two of them) do not have to trust each other. Compared to traditional Bitcoin mixers, there is no possibility of coins being stolen. Also, CoinJoin transactions are compact and incur no additional fees (besides the usual transaction fees)

This is an example of a CoinJoin transaction: https://blockchain.info/tx/e4abb15310348edc606e597effc81697bfce4b6de7598347f17c2befd4febf3b

Blockchain.info has already implemented CoinJoin support (branded as Shared Coin) into their web wallet.