Update: This is now available on NuGet and GitHub
This is a feature I've wanted for sometime. It never came, so over time I've created an extension method called NHibernate X-Factories. All you have to do is create multiple session-factory elements in one .cfg.xml and name them. Then you're able to call them by name when you configure the sessionFactory.
nhibernate.cfg.xml
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2-x-factories">
<session-factory name="Development">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=dsql01;DataBase=dbDev;uid=nhDeveloper;pwd=pass1234</property>
<property name="show_sql">true</property>
<mapping assembly="DataLayer" />
</session-factory>
<session-factory name="Production">
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=psql02;DataBase=dbDev;uid=nhDeveloper;pwd=pass5678</property>
<property name="show_sql">false</property>
<mapping assembly="DataLayer" />
</session-factory>
</hibernate-configuration>
C#
NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();
config.Configure("~/nhibernate.cfg.xml", "Development").BuildSessionFactory();
See more at https://www.github.com/roydukkey/NHibernate-X-Factories/.