I think this is more of a source control problem than anything. Typically the database and software versions should go hand in hand. With a good branching and merging strategy you shoudln't be running into this. You should always have a version of your source that ties to what's actually in production (in my opinion).
In our situation when a version of the software/database is released we have a release branch that corresponds to that version. If a software change needs to be made where a database column was added for example we would have a development branch where the work was done and when it was ready to release in production we would then create a new release branch that corresponds with what you just installed in production.
If bug fixes needed to be made to a production version you could branch off of the release branch to make the bug fix. Once tested and deployed to production you would then merge the changes made in the bug fix branch back to the release branch to again represent what was in production. You would then also in turn merge any changes from that release branch to your "latest"/main branch.
There are some great guides on various branching and merging strategies here:
http://vsarbranchingguide.codeplex.com/releases
But to answer your specific question I don't think there is a great way of doing this. If it's in the mapping nhibernate will query it and thus causing errors.
Edit:
There are things you can do in NHibernate to only look at certain columns. For example on updates and inserts you can set the mappings to do dynamic inserts and updates:
(7) dynamic-update (optional, defaults to false): Specifies that
UPDATE SQL should be generated at runtime and contain only those
columns whose values have changed.
(8) dynamic-insert (optional, defaults to false): Specifies that
INSERT SQL should be generated at runtime and contain only the columns
whose values are not null.
Above taken from: http://nhibernate.info/doc/nh/en/#mapping-declaration-class
Also in nhibernate queries you can specify the specific columns you want to query:
IList selection =
session.QueryOver<Cat>()
.Select(
c => c.Name,
c => c.Age)
.List<object[]>();