If someone tries to hide by creating a new wallet, you can also see that money from a known account got transferred to a wallet for which no previous transactions exist. Perhaps this is a different person, but when you see the same transaction patterns in the new account you can start narrowing your assumptions.
You could generate a large number of holding wallets in advance of any transaction, and retain a set amount of money in each wallet.
Then when you are planning to make another transaction, you generate a new transaction-specific wallet, and execute some sequence of transfers from a random assortment of your holding wallets to your transaction wallet, and then execute the transaction.
You could also have multiple layers of holding wallets and transaction wallets, and conduct some bitcoin rotations with friends to shuffle things around.
I envision if a few people are doing that, it could be very difficult indeed to correlate transaction to holder; now, I won't say impossible, because there are probably bound to be some patterns that might be detected through statistical analysis...
Not general problems, but implementation-specific problems that would be likely to occur.
There is also the issue about transaction cost, since the 'holding' and temporary/thorwaway wallets generates spurious non-transactions that look like transactions, and therefore, would use part of the bitcoin network's capacity.