Well, current practices are definitely not providing the anonymity people desire, there are a lot of things people can do to improve that. For one thing, always use an anonymizer to hid submitted transactions.
The tradeoff for good anonymity is the time it takes for the funds to be transferred from buyer to seller -- a lot of time is needed to hide the origin of bitcoins.
Other than IP addresses, various things to consider are secure communication of addresses (both bitcoin and postal), amount sizes, the "roundness" of number (compare these amounts: 1000, 1986.62, 1986.62792413). The standard bitcoin client is probably not the best tool for this -- more fine-grained control is needed.
Alternatively, there could be truly anonymous virtual currencies established that are redeemable for bitcoins. One implementation idea is:
http://www.echeque.com/Kong/anon_transfer.htm