Having accidentially changed eol happened to us as well. This was in our project with mercurial which is not to blame.
Rather it was my fault. Running Linux, I mounted the Windows partition and committed the changes in the tree lying on the Windows partition I had made before when running Windows. Having experienced that, we avoid now committing when running Linux a source tree which is on an NTFS partition or mounted via Samba.
Now, we have set the appropriate property in the mercurial repo. Maybe, this is enough. Nevertheless, we now always commit on Windows when we have made changes on Windows and on Linux when we have made changes on Linux. Merging back and forth is fine then. This workflow is definitely not elegant but is KISS and works quite reliably.
Dos2Unix does work if the files are on some Linux partition. Of course, you can change files on a windows partition as well with it. But then the OS might interfere when committing and it is probably more error prone, especially if done manually.