How to form_later the user profile form to only allow 1 role to be assigned/removed
Roles are removed because when the form is submitted those roles are missing (and thus unchecked). You can hide those options instead:

$form['account']['roles']['3'] = array(
  '#disabled' =&gt; TRUE,
  '#attributes' =&gt; array('class' =&gt; array('hidden'))
);


And some CSS .hidden { display: none; } or something.


  In D7+, form_process_checkboxes() and form_process_radios() already support you in doing so by allowing for partial sub-element pre-definitions read more