In my case there was no reason. I just have Filter extension method that dynamically build expression for Where method and it use Expression.And method instead of Expression.AndAlso - that method works great with Entity Framework, but when I use it with NHibernate it doesn't work so I changed it.
When I create linq query that use AND operator (&) like below i get InvalidCastException:
session.Query<Person>().Where(p => p.Name.Contains("Jo") & p.Address.Contains("War")).ToArray();
My current workaround is to use AndAlso operator (&&).
The issue can be related to NH-2539, because exception is throwed in the same place in AsBooleanExpression method.