Several successful projects exist without TDD (or even unit tests for that matter)
The whole of GNU+Linux for example (or at least most of it)
On the other hand I've seen several projects claim "very good TDD coverage" and then crash and burned when put into production (usually posted to HN)
Real world, real usage testing is essential. TDD is good for keeping you on track and avoid regressions
It's also good for complicated (small) pieces of software that do something complex and is prone to having its behaviour adjusted with time (think: reports, data consolidation or analysis, calculations, etc)