I'm not aware of any plugins or gems that take care of this directly (i.e. by handling everything from the model to the views), and have searched briefly on gemcutter.org and agilewebdevelopment.com for plugins to no avail.
One up and coming program/package that manages this very well is Google Wave.
But if that's not an option (as it almost certainly will not be), here's a quick and very simple idea that might get you there:
Add a field to the 'edit' view called "requested_at"
When you receive the 'update' for an edit, check whether the "requested_at" form field value is less than the stored object's "updated_at" value.
If it is, send a response to the browser warning the user of the possible conflict. You could even display a difference between the user's submitted data and the current state of the stored object. For this 'diff' display I recommend the diff-lcs library available at gemcutter: http://gemcutter.org/gems/diff-lcs
After the user views and revises his subimssion, rinse and repeat (or give them the option to override any existing changes even if someone else has edited the text).
An answer below mentioned the use of versioning for your active_record models, and for that you could try ActsAsAudited (at least that's my favorite)...but I'm not sure that's the problem you were describing.