I get round this by having a repository wrapper. In my Get / Load methods I test for an interface (as its a simple Get<T> that can also take a concrete) then instantiate the correct concrete class for that interface and run the Get/Load against that. I use something similar to Fabio's code to interrogate the NH interface -> concrete proxy map to work out what the correct concrete type is.
I don't have the code to hand to post, but it's something like the above and works fairy well for me so far
