I had done this on a documentation system I put together.
I created a checked_out_object table that consisted of the object_id, user_id, date when the item was checked out. I then added a checked_out permission to the permission system.
I actually had an adminstravite group that checked things back in (configuration and documentation process rules).
I'll look around and see if I still have the code, but I have my doubts as that company was a bunch of SOBs.