Hey nathan, good question.
As others have said, the best thing to do is abstract all your GET/WRITE methods, and hide away the DataContext completely from your Business Logic.
My approach to this has been to write a DAL with a bunch of Generic methods which use reflection to do to whatever is necessary.
In these instances, once the method receives an object, say "Product", it can do whatever it wants internally independent of you ORM/Data Access technology. If you want it could literally just write a SQL string based on a few parameters, and reflection of the object.
HOWEVER, doing this alone won't completely de-couple you from LINQ to SQL.
The problem really are the entities themselves. Even if you abstract the method for retrieving data, you'll still be using those Entites all the way up your business logic.
I feel like, at the moment, thats just something I'm prepared to live with, because re-writing my own disconnected Entities seems like a bridge I'm not prepared to cross yet, just because it seems like a lot of unnecessary work...
I'd be very interested to see how others tackle this though.
cheers!