No such thing as anonymity in Bitcoin, even if the users were to be careful with their activities, it would be the best to assume that Bitcoin is pseudonymous at best. There are far too many possible privacy leaks with users even if they were careful enough; potential spy nodes on the network, possible leaks through mixers with their heuristics, etc. Bitcoin was never really designed to provide anonymity from the start and all the current implementation only helps to maintain the privacy of the user.
As mentioned, CoinJoin, mixers all helps with the privacy. Confidential transactions has been proposed as well, which helps with privacy but at the expense of higher resource requirements.