Robert C. Martin originally made these points - I can back them up from my own experience:
- You will automatically build a regression test suite of unit tests as you go.
- You will hardly ever spend time debugging, as if you code yourself into a hole, it's easier to undo your code to the point when the last test passed, rather than crack open a debugger.
- Every few minutes you verify that your code works - all of it (or at least all of the behaviour covered by the tests, which if you're doing TDD is a very high percentage of it).
I pretty much do TDD all of the time, whether I'm working on production or play code; I find it difficult to code any other way these days.