You can use an "Auto enter" calculation.
IF (Get(AccountPriviledegeSetName="RegularUser" and Fieldx=1,"",Fieldx))
This would set the value to blank if they tried to enter one. The problem is no feedback.
Alternately you could use a ScriptTrigger that fires on the field change, and then test for this condition in a script, and display a warning message. The downside is this has to be done at the field/layout level, where the Auto-enter calc would behave globally, anywhere you use the field.
thanks LSNOVER , the problem here is that for every regular user I have a different Privilege Set, so I should fix the syntax so that the condition applies to anyone whose Previlege Set isn't "admin" (I tried to do it, but I'm probably doing something wrong with the formula)...
Secondarily, this wouldn't prevent regular users from switching value from a pre-existing "1" to another value (see second bullet)
I would suggest that in all "regular" privilege sets, you prohibit access to modify this field. Then, allow those users to change it through a scripted process (buttons) that runs with full access privileges. The script needs to contain the logic to determine whether the user is authorized to do what they're asking, then do it.
What Jason is proposing would work.
You can use a field level script trigger to skip over the field if there is a 1 in it already. Use a script set to On Object Enter to that goes to the next field if the value is 1. You can also display a dialog that explains what is happening to the user.
Another way would be to have two copies of the field. One can be set to be enter-able in Browse mode the other not. You can hide one and show the other conditionally.