Если кратко — NHibernate существенно сложнее, поддерживает практически все мэинстримовые БД и гораздо функциональнее.
По некоторым тестам быстродействие NHibernate существенно выше EF.
Ну и, конечно, интеграция с окружением .NET у EF гораздо лучше и присутствует удобный дизайнер схем.
Для меня ключевым фактором стала возможность достаточно просто дописывать поддержку своих типов и методов для Linq провайдера.
Так у нас например через NH есть полная поддержка MS SQL HierarchyId, чего повторить на EF 4 не удалось (в тот момент EF 5 небыло).
Ну и поддержка кучи БД играет значительную роль.
Вышел NHibernate 3.3.3.GA