Hi again
so the steps you want to take are
1) User presses submit button
2) Some rules run to email form, then...
3) Set flag
One note of caution, if you are sending the form on then setting the flag then you will not be able to submit the form as the "row cannot be located for updating" (for more info search for my post in the database integration forum). You state in your first post that if you put the set flag after the form has been sent it does not appear in the sent form. This is becuase at the time of sending, the form exists in two places, the form you have open with the flag set, and the sent form without the flag set. It will obviously fail if put before the submit as they can cancel. Without writing some heavy-duty code you can use a workaround I have utilised below.
For example, using an AD Web Service that lets the form know who you are (Or if you are using Infopath 2007). Have your workflow field go from NULL to 'a' for with authoriser to 'A' openend by authoriser and so on. So the flag is set to 'a' before the email is sent. If they click cancel all they are left with is a form they cannot submit any further and it ends there. If they click send the form goes via email to the authoriser and the local form closes. Now set a rule on the form such that is your flag is equal to 'a' and the authoriser is equal to the authoriser specified on the form then open the authorisers view, otherwise open a FAILURE view. This would solve your problem without code.
Any further questions feel free to ask, otherwise I hope this helps.
Adam