Having been using LINQ to SQL for some time now, I came across my very first issue "There is already an open DataReader associated with this Command which must be closed first." it's been some time since I had this issue.
The issue only appears on one database and that is being held on a SQL 2000 box.
The solution, sorry work around, is to transfer the results in to Lists using ToList() after each LINQ call.
I have found it hard to replicate in my test environment, as it only happens on a clients installation.
David Foderick posted a similar issue he had with the Entity Framework
After speaking with Eric Nelson, he pointed out that SQL 2000 has a lack of support for MARS, however there is no planning to provide support for this, however SQL Azure does not allow MARS. So perhaps this issue will get addressed some time in the future?