When lazy loading is true the returned type from a db call will be a proxy, so if you call GetType() you will get the proxy type not the underlying class.
To overcome this use NHibernateUtil.GetClass(object-instance).
This blog is a record of some development issues I have faced. There may be something of use!