I would recommend having three xpaths in your form, one for each of the steps of the process. So let's assume the process roles are: submitter, approver and reviewer. You'll have rules to store the appropriate username in each of those fields. If a form is new, the currently logged in user becomes the submitter. If the form already has a submitter, then your rule should not try to overwrite that field. It sounds like perhaps your rule is not executing correctly, but there's not enough information above to troubleshoot.
You should consider using InfoPath user's role. Here is a link about InfoPath user roles (also read this). Maybe this will help.
Good luck!