The fungibility of cash is what makes it hard, although likely law enforcement will be able to trace many of these.
For example, you take your ill-gotten gains and just randomly send $1 to a million different addresses, some owned by you, some owned by random people or exchanges or whatever. Nobody's going to say no to free money, so the trail goes cold.
Or you use an offshore exchange that doesn't really practice strong KYC, and exchange the ill-gotten gains for a different cryptocurrency and now without the private ledger of the exchange, the trail is cold.
At one point "mixing services" were the talk of the town, but at this point it's clear that you can get 99% of the benefits of mixing without having to go through an explicit service.
For example, you take your ill-gotten gains and just randomly send $1 to a
million different addresses, some owned by you, some owned by random people or
exchanges or whatever. Nobody's going to say no to free money, so the trail
goes cold.
This one wouldn't really cause the trail to go cold though. It would be trivial to automate the tracking and if all of those funds end up in a single location eventually that would also be trivial to automate tracking. You really would need to do a Mixing with other counterparties to get any kind of anonymity. Even then mixing can be detangled as well.
For Ethereum, there's Tornado Cash[1] and other projects based on zk-SNARK[2] or similar tech. I'm not sure if there's a fully decentralized equivalent for Bitcoin.