Bitcoins are much less anonymous than normal net traffic, even. If someone sends you some money, you get to know the address it came from, and plug it in on http://blockexplorer.com/ and you can see which addresses that address got its money from, and how much, and you can trace it all the way back through history to find out which block generated the money and how it got to that address. Depending on how people consolidate their wallets, you can even see how much money they have.
I don't have to be routing packets for you to find all this out; every transaction goes to every node.
There are "laundering" services which try to play a shell game with addresses, but I think they're probably easy to reverse-engineer, at least probabilistically if not completely.
OTOH, unlike IPs, you can't pinpoint addresses to any location though or find out who owns what addresses for sure. I guess they're more pseudonymous than anonymous.
Anonymizing bitcoins is not difficult. For example, you can deposit your coins in an online wallet service, and then withdraw some fraction of that amount to an anonymous address. Because the wallet provider can pool its coins, the coins coming out can have absolutely no relationship to the coins going in, outside the private records of the wallet provider.
The wallet provider could, in principle, be subpoenaed / coerced /hacked / owned by the NSA. I imagine there will eventually be a Tor-like "onion" anonymization method, where bitcoins are routed through multiple such services, so that no single service need be trusted (except to not steal your money). The main challenge with these techniques is avoiding forms of traffic analysis, where I notice B$98.23 heading from A to B, and shortly thereafter, B$98.22 heading from C to D, and infer that these represent a single transaction chain despite being disconnected in the block chain record. Such attacks can be minimized by, e.g., settling on a fixed transaction amount for all transactions with a given service, and adding random delays commensurate with the transaction rate and degree of anonymity required.
I don't have to be routing packets for you to find all this out; every transaction goes to every node.
There are "laundering" services which try to play a shell game with addresses, but I think they're probably easy to reverse-engineer, at least probabilistically if not completely.
OTOH, unlike IPs, you can't pinpoint addresses to any location though or find out who owns what addresses for sure. I guess they're more pseudonymous than anonymous.