Are the benefits enough to use another external assembly? How difficult is it to remove S#arp and keep NHibernate at a later point?
I think that there would be problems with keeping everything - S#arp isn't a small helper class for NHibernate only. Integration with it is supposed to be tight by design.
If i had to start my project once again - i would use S#arp architecture. That Northwind sample project looks like a lollipop to me.
Therefore - if you feel fine with external libraries - go for it!
I prefer straight IoC + NHibernate + MVC.
A few months ago I took a look at S#arp architecture at the same time I was getting into IoC and Mvc. I picked it apart thoroughly. I like the way the project manages NHibernate sessions in a very test-friendly way. I've carried that design into my own projects. But I felt I would be better served understanding what was going on and simply setting up only what I needed in my own project architecture.
IoC is not difficult to set up. NHibernate + Fluent NHibernate is not difficult to set up, once you've done it a couple times. I prefer to know my code, especially when it's something simple like IoC and NHibernate, rather than delegating implementation to a black box.
you need to understand what's going on under the covers because you're going to need to extend the architecture for your domain. i use S#arp every opportunity i can.
Luis Abreu has a great series of blog entries on S#arp Architecture that discusses the most important assemblies in the project. They certainly helped my understanding of the underpinnings of the Framework.