What is the concensus on when to use one of these tools adversed to the other? I find Subsonic very useful in terms of getting things done quickly, but on large projects it
I can't give a good comparison as I've not yet actually used NHibernate on a project, but I have used SubSonic and have been very happy with it. So far, I have not hit any major obstacles when using it.
Check out this post from Rob Conery, one of the creators of SubSonic. He talks about how to decouple your SubSonic code from the rest of the app. He even mentions the fact that this architecture would enable you to later swap out SubSonic for some other data access layer such as NHibernate or LINQ to SQL.
I know I didn't actually answer your question, but I hope this still helps.