I think you could use the Elggx Badges plugin as starting point. Either adding the functionality to change the profile type accordingly within the existing functionality (when the Elggx Badges plugin would change the badge if the necessary number of userpoints has been reached or when the admin assigns a badge manually). This would work if you use the Elggx Badges plugin anyway. If you don't use the plugin you could still take it as an example, remove all the code only needed for dealing with the badged but keeping the parts that handle the check of userpoints of a user and react on it (here the 'userpoints:update', 'all' plugin hook provided by the Elggx Userpoints plugin is used) and the plugin settings code that allow for manually assigning a badge (which you would then change to just change the profile type of a user).
I don't know how the Profile Manager plugin deals with profile types internally. So I can't get more specific here. Most likely the profile type is saved as metadata for each user. Then you would just have to update this metadata value (according to the workflow implemented in Elggx Badges for changing the badge either on admin input or when a certain number of userpoints is reached).
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by RaĆ¼l Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.