I personally almost agree with the Typemock people, I'm all in favor of TDD/refactoring but I do think that designing for test is not necessarily the best way to go.
I know decoupling your system can be to your advantage but it does add complication and if the only reason you end up doing it is to let mocking in then I'm not sure how useful it is. Plus the interfaces and so on you create to allow non-Typemock mocking probably aren't going to be the same interfaces you'll need if a proper reason for decoupling comes along.