Now shipping wiht VS 2010 Beta 2, and with SharePoint 2010 you will have support for Linq to SharePoint. Not the codeplex project, but true linq support from MS(Microsoft.SharePoint.Linq). What it does in the background is to create the CAML queries for you, to keep up the speed, looks like MS realized that CAML is no ones friend, but they have to support it for backwards compatability.
Another neat feature of Linq 2 SP is that it will support filtering of items by lookups, meaning if a list say Regions, and a list for Office Locations, where Region is a lookup field, in the Linq query you can specify that you want all items from Office locations where Region = whaterver etc. So this starts to look more like a rational database again :)
To enable the features, there is a tool called SPMetal, which creates the proxy classes for an entire site, allowing for IDE support. Running this tool creates a .cs or .vb class file with the types used by the Linq Queries. Good thing is that this is only run once for a site, unless ANYTHING changes... so it is not such a good thing, just make sure when you start to work with it that you generate the class again if things do change, since this is all going to be tested at runtime instead of the standard compile time, like most developers are used to. Just another thing that is runtime for SharePoint developers I guess.
Either way, even with some of the drawbacks of the proxy classes, we have support to make complicated Linq queries in code and they execute very quickly.