If you never reuse addresses, and if you never create transactions with multiple inputs, and if you are careful about making change addresses difficult to distinguish from your spends, and if you take proper precautions at the network layer, then you're difficult to track.
How do you make change addresses difficult to distinguish from your spends?
What do you mean by precautions at the network layer? Tor?