How to change a field type from free-form text to a taxonomy term and keep its existing data?
Changing the field type as you asked is not possible.

However a possible alternative to achieve a similar result is like so (in the order specified):


Create a new taxonomy term field, so that "from now on" any future node updates (or new nodes being created) will use that new field.
Use the Rules module to create a rule like so:


Rules event: before saving content.
Rules conditions:


entity has field, with field = the old field.
AND NOT (entity has field, with field = the new field).

Rules Action: set Drupal message, which contains some instructions that the old field must be blanked out, and the new field should contain the appropriate value(s.



Obviously, this approach will take "some" time if this has to be done manually, 1 node at a time. But using Views (to build a list of similar nodes to be updated) and VBO (to mass update such lists) you might (should!) be able to speed up this process quite a bit. Refer to my answer to "How to bulk update select list fields?" for an example with way more details about that.