Some new discoveries by myself:
In some new project I switched to Layered Architecture, so different layers were separated in different project and put in one solution.
I have created the Domain Project containg domain classes and data repository classes (repositories return linq object for further modifications if possible) ( this is a Business Domain , not any other domain eg. windows od .net domain)
All entities (custom class objects, eg. Product, Customer, etc) are moved to separate Entity Project. These are classes currently generated by Entity Framework 1.0 but this is not really important if this is LinqToSQL or any other class generator.
Then added the Infrastructure Project with IRepository and IDataSession intefaces which implements low-level data provider operations and talk to appropriate provider.
So, this allow to swap data provider if needed, or even use more than one, each could be different but you don't have to modify the logic and other things. Currently the entities are tighted to Entity Framework, but v2 of EF will support POCO which will solve that problem.
This is nothing more just the Domain Driven Design well described and explained.
Good reading below (free ebook):
www.infoq.com/minibooks/domain-driven-design-quickly
Hope this helps.