As I understand it, bitcoin doesn't track coins so much as it tracks the funds associated with account numbers. When you have "dirty" coins, it's really that people know an account (say, A) has illegitimately gotten funds (say, $x).
A tumbler functions by taking $x from A, transferring it to the tumbler account (say, T), and then transferring it on to other accounts (eg, B1, B2, ..., Bn) in various amounts that total the input ($x) minus some fee. Something like:
(A, $x) -> [T] -> [(B1, $y1), (B2, $y2), ... (Bn, $yn)]
In order to use a service as a tumbler, you'd need them to a) keep secret what you bought from them (ie, the difference between $x and $y) and b) allow you to transfer the funds out to a different account number than the one that sent the coins in (and ideally, a few such numbers).It would seem like any legitimate business would hand over that information when requested (or subpoenaed).