Mike, I did some thinking about this subject a while ago. I'm sure your understanding is much deeper than mine, but there is one idea you might find interesting: limiting the valid transaction sizes (measured in BTC) to some small, finite, exponentially-distributed set. See
http://andrewbadr.com/log/11/anonymizing-bitcoin/ for details.
Yes, I think in future we'll be splitting the concept of payment from the concept of bitcoin transaction so a single payment may actually be made using several unlinked transactions that move outputs of roughly the right amounts. The payment protocol work already takes us in that direction. It would close those kinds of privacy leaks although it'll make payments somewhat "soft" in that when somebody sends you a large payment, it might actually take a bit longer to completely arrive (as it'll be delivered in chunks).