The current problem is that I'm getting some sort of permission error when trying to load the registry hive for the impersonated user (I generally log on as Owner).

SE_TCB_NAME
SE_CHANGE_NOTIFY_NAME
SE_IMPERSONATE_NAME
SE_ASSIGNPRIMARYTOKEN_NAME
SE_INCREASE_QUOTA_NAME
SE_RESTORE_NAME

In order for LoadUserProfile to work on Windows XP you need to add the following permissions to the ASPNET account:

Act as part of the operating system
Backup files and directories
Restore files and directories
Replace a process level token
Bypass traverse checking
Impersonate client after authenticaion
Adjust memory quotas for a process

AdjustTokenPrivileges() may be the answer (done this now... it does not seem to help)