You have to pass the instance to both the unbound and the bound form:
else:
profile_form = UserProfileForm(request.POST, instance=profile)
if profile_form.is_valid():
... # save the updated profile
This will ensure that the current user's profile is updated, rather than a new profile being created.