Второй пользователь получит объект, содержащий старые данные, если у вас включено кэширование второго уровня, и объект, содержащий новые данные, если нет. Если, конечно, они не используют один и тот же экземпляр ISession, что не рекомендуется.
Кэширование первого уровня находится на уровне сеанса; Второй уровень находится на уровне фабрики сессий. Если у вас есть обновления, которые сделаны напрямую, а не через NHibernate, они не будут восприняты ни одним из уровней кэширования, поэтому, если вы попадаете в кэш (либо с включенными различными сеансами и кэшированием второго уровня, либо с использованием того же сеанс) вы не увидите внесенные изменения.
В этих сценариях часто имеет смысл использовать какой-либо столбец версии (например, отметку времени SQL Server, Oracle ORA_SCN) и оптимистичную автономную блокировку, чтобы предотвратить обновление объекта, который фактически был обновлен другим процессом. .