I have asked myself a very similar question except that instead of NHibernate I was thinking about WilsonORM which I have consider pretty nice.
It seems to me that there are many important differences.
LINQ:
- is not a complete ORM tool (you can get there with some additional libraries like the latest Entity framework - I personally consider the architecture of this latest technology from MS to be about 10 years old when compared with other ORM frameworks)
- is primarily querying "language" supporting intellisense (compiler will check the syntax of your query)
- is primarily used with Microsoft SQL Server
- is closed source
NHibernate:
- is ORM tool
- has pretty limited querying language without intellisense
- can be used with almost any DBMS for which you have a DB provider
- is open source
It really depends. If you develop a Rich (Windows) desktop application where you need to construct objects, work with them and at the end persist their changes, then I would recommend ORM framework like NHibernate.
If you develop a Web application that usually just query data and only occasionally writes some data back to the DB then I would recommend good querying language like Linq.
So as always, it depends. :-)