Wygląda na to, że zadziałałoby to, jednak zmiany (a tym samym pamięć), które są przechowywane przez DataContext, będą rosnąć z każdym InsertOnSubmit. Może warto przeprowadzać SubmitChanges co 100 rekordów?
Chciałbym również spojrzeć na SqlBulkCopy aby sprawdzić, czy nie pasuje lepiej do twojego przypadku użycia.