When developing CrowdedText.com, I ran into the problem of needing read-only fields once a node had been created. I didn't want to prohibit editing completely. Only for a few fields.
You can't just hide or disable the field, although that's a necessary step. Anyone with a tool like Firebug would still be able to edit the html in real-time and submit the form, changing the value. When some of your backend logic depends on the keeping these values accurate, this is a big no-no.