I am a little ashamed to say that I have never used an ORM; as you may recall most of my career experience is hacking around with Classic ASP and the little .NET I do tends
I second David Robbins's mention of subsonic. One downfall that I will point out though is that the documentation is less than perfect. It's really pretty simple to work with, you just have to know how to do it.
I suppose one other thing that's worth mentioning: what databases do you need to support? If you need to work with anything other than SQL Server, I wouldn't use LINQ. I could be wrong on this, but last time I checked, there isn't any good support for databases other than SQL Server.
The last thing that I would mention is that you don't have to choose just one. I've used nHibernate, LINQ to SQL, and Subsonic in the same project with decent success (although I'd advise to avoid that if at all possible). My advice is to spend a little bit of time with all of them and learn what's best about each one.
Here's what I would say about each one:
TL;DR: NHibernate if you need to have a lot of control over the database or need to support something obscure. SubSonic if you need to work with something other than SQL Server. LINQ to SQL if you just want to run against SQL Server.