Prevent change field in user profile edit
There isn't anything to do this out-of-the-box in Craft.

I believe the proper way you'd want to approach it would be to write a plugin that has it's own field type that takes into account user permissions.

An admin would get a normal text input, for example, and any other user would just see read-only text.