Let's assume you're the outside observer. You see 1 BTC go from
bbb, then from
ccc, then from
ddd, and them from
zzz being associated with service Z). Can you see how easy it is to figure out that addresses
ddd belong to the same person?
It doesn't even get much better if you split the money to different addresses and then reunite it. How often do you think some money flow like
ddd belonging to the same person?
That's why people use so-called mixing services. A mixing service collects money from several people, as well as addresses to pay the money out to.
As an outside observer, even if you know who the respective owners of addresses
字字字 are, you cannot determine who paid money to
zzz, whereas in the first 2 examples, it's pretty obvious what probably happened.
This, of course, is simplified. Similar to how a criminals hiding the origin of their fiat money wouldn't move it to a single bank account in a different country and then back to where they live, mixing services don't give the users their money back after a single iteration. Instead, the money is mixed several times. A graphic showing many iterations and funds of many people, however, wouldn't get the point across very well.
This doesn't help, of course, if an outside observer can match which addresses belong to whom based on how much money went from
aaa through the mixer to
ΨΨΨ. To prevent such a mapping, the mixer may send money of equal amounts to many addresses. Of course it's a bad idea to reunite the funds afterwards because this makes the owner trackable by amount again.
Note that using a mixing service might be illegal under money laundering laws where you live, especially if it's done with a large amount of money.
Furthermore, a mixing service may just be a scam and the owner will run off with the money given to them.