How to make a field readonly using hook_form_alter
It sounds like you could accomplish what you need to with Field Permissions. On a field-by-field basis you can set permissions to:


  
  Create own value for the field
  Edit own value for the field
  Edit anyone's value for the field
  View own value for the field
  View anyone's value for the field
  


So you would easily be able to allow your users to create the value for the field initially, but as soon as they have it only becomes editable by an admin.