Versioning systems are fun.
While versioning systems and models do exist, the issues with editing the same file as someone else usually come back to management (either physical management or personnel management). When two people have the same file open at the same time, unless there is a need, chances are they are making decisions for themselves.
That being said there are instances where two people may want to make the same revision. My wife and I were talking about online bill pay in our bank. With the system they have in place it is entirely possible for me to setup an automatic bill payment and for her to setup one under her login. While we use the same account there would be no way to tell the same payment was made twice off of the same bank account because of the way the bank treats user privacy. This is a huge issue for us because we can't delegate bill paying to one or the other, or we have to compromise the security of our accounts by sharing the same login in more than one location (added risk).
There are several options available from a programming point of view
You might want to look into something like etherpad to get an idea for how it works. Google incorporated the app into Google Wave. Basically it's realtime collaborative meaning you can see other people typing and you can see who it is that's typing and their edits. Here is a post on lifehacker featuring the top 10 web collaboration tools.
Software development teams use applications like CVS (Concurrent Versioning System) to "check out" files to edit, then if someone else goes to connect to the file they do not have the option. Smashing Magazine has an article showing 7 CVS-style versioning systems.
Versioning even exists for copywriters
Applications like Microsoft Word, Adobe Indesign, and Adobe InCopy use versioning and will create a locked version of a file and allow other users to see it in read-only mode. Word can also track changes in a file and then allow different people to authorize or commit the changes. InCopy and Indesign allow two people to work on the same file, the second user imports the edited content into their document.
When I'm doing web design I use Adobe Dreamweaver. While it integrates with CVS (if you've configured your server for it) they also allow you to specify an application for recognizing file differences and tracking changes. In that case I use WinMerge which shows me line by line which lines have changed and both versions of the document are editable. It's great for showing a line by line comparison of files.
When I'm using MySQL Workbench (a database connector GUI) to work directly on databases I've noticed that they are very smart about performing their database update queries. In my experience most web developers will replace an entire record set whether changes were made or not (because it's easier). In Workbench they've taken their time and only replace the record that has changed. So if I update a phone number on one row and a title on another row, my database SQL updates only show the phone number for the first ID and the title for the second ID. This can definitely cut down on the amount of overwritten copy since most information is stored in a database.
It's a little more work, but if you have the time, making a system that merges a lot of these functions would provide the best user experience and save the most time (and money due to double work and overwritten records) in the long run.