How can I create a one-time URL (sent through email messages) users can use to change the value of a custom field?
Unfortunately Drupal requires that users reset their passwords when using the one time login link.
The easiest way to avoid that would be to use a module like URL Login, which generates login links for each of your users. There are a couple of modules which cater for similar use cases so you'll need to find out which one works best for you.
You can then use LogginToboggan to redirect your users to your custom page where they can edit the custom field. You may need to create a custom User Role depending on the need for access control.