When I attempt to change the field User.ContactID in order to connect a User to a different Contact, I get the error message 'Field is not writeable: User.ContactId'. Is there any way to do this?
No, you can't change the contact associated with a customer portal user. You can disable the customer portal user on their contact record and create/enable a new user with that disabled username, email, etc. on a different contact record. Customer portal user to contact operates like a 1-to-1 relationship.