Айенде дает хорошее резюме того, как обращаться с NHibernate в настольном приложении здесь .
С StructureMap я сначала создаю ISessionFactory вручную. Затем объявите экземпляр, который будет использоваться во всех экземплярах ISessionFactory:
For<ISessionFactory>().Use(sessionFactory);
Таким образом, вы покидаете сами экраны, чтобы создавать и распоряжаться своими сеансами. Важно, чтобы все сеансы были изолированы друг от друга, чтобы избежать проблем с памятью. Это подробно объясняется в статье.
При таком подходе и при правильном использовании IStatelessSession я сократил многие проблемы, возникшие в приложении WPF / StructureMap / NHibernate.