Bitcoin is /not/ anonymous. It is in one sense totally public (in terms of what addresses made what transactions) but in another sense much more difficult to tie an address to a person. It is possible though. There are many good papers that have already been written (and a proposal for zerocoin to add total anonymity).
If you are using coins you mined, or putting coins in mixers and using Tor, I think bitcoins would be very very difficult to trace. There is no way to link accounts to people without serious surveillance that crosses international borders, uses packet sniffers, etc. Could it be done if bitcoin was being used to fund a terrorist network, yes probably. Could it be done by some sergeant or FBI agent looking for a $10k money launderer or someone buying weed? Def not.
For large scale purposes, say moving millions of dollars anonymously, cash is probably still king. For smaller scale movement of money, with effective coin mixing, multiple wallets, and/or mined coins, bitcoin is essentially extremely hard to track.
http://blog.cryptographyengineering.com/2013/04/zerocoin-making-bitcoin-anonymous.html
It is true that every transaction is public, that is what makes double spends impossible, but linking transactions to identities is a very non-trivial exercise. It is possible with surveillance and datamining, but the concurrent use of Tor, multiple wallets, coin mixers, transactions across international borders etc means that it would be vry hard for a single law enforcement agency with limited resources to track money. There are many places where a transaction history could "go dark".