Hi,
The only cases I have seen such troubles is with dynamically compiled Web sites. Sometimes IIS does recompile code it has already compiled, and then the application starts using the same class from different dynamically compiled assemblies. That causes them to be no more considered of being of the same type. This case has nothing to do with NHibernate. (NHibernate is not used in the application with which I have seen that.)
Restarting the application causes the trouble to go away. Ensuring that all folders with dynamically compiled code are compiled soon after startup, by having some process browsing the Web site, highly reduces the occurrences of the trouble. Forcing an application restart if some patch touches dynamically compiled files which changes are not enough to trigger a global restart is also needed. (This can be done by touching a file under the App_Code special folder.)
Another way to avoid having the trouble is to change to compiled at build time classes shared between different dynamically compiled folders being outside of App_Code.
Is your application an "old style" Web site converted to a Web application but still having dynamically compiled code? I means, code which has to be deployed as source code to the IIS server, instead of being compiled to an assembly. Such .cs or .vb files (including aspx.cs and aspx.vb files) have their build action being Content instead of Compile. Maybe even aspx template file can have this trouble, if they use classes dynamically compiled from the App_Code special folder