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.