After some googeling (although I haven't tried this yet), you can apparently at least map classes to tables in different databases on the same server, using
<class name="..." table="..." schema="database.schema">
...
</class>
in the mapping.
But IMHO this is a crappy solution, because it doesn't seem to be server-independent. Apparently, NHibernate just concatenates the schema value with the table value in the creation of the query - and for most servers, "just putting the database in there with the schema" results in a syntax, which HAPPENS work. BUT you don't cleanly tell NHibernate "this is the schema" and "this is the database" so that NHibernate can cleanly decide how to build the query - you mess with its query creation by injecting contextual data where it doesn't belong.
IMHO, NHibernate should suppress such dirty hacks and throw an exception if the "schema" value contains a .
Anyhow, there seems to be no technical reason why you shouldn't be able to go one step further and use schema="server.database.schema", where "server" is a name of a linked server (see for example http://technet.microsoft.com/de-de/library/ms190479.aspx )
Apart from that dirty hack, everyone seems to recommend using multiple session factories.