From the little I've read on the GetUserProfileByName datasource, when it is first configured if you don't change the defaults for the parameters (that is, if the Account Name in the query fields is blank), it will, by default, return the current user's information. Your issue is that once you have that current user's information, you'd like to get the same information (well, at least some of the same information, the email address) for a different user.
The filter scenario won't work, because those data fields currently only hold information about the currrent user.
To demonstrate what I mean, try this. Put a button on your form. Right click and in the button properties, go into rules. For your first rule, set a field's value and set the query field account name in your GUPBN datasource to the value in your approving_mgrusername field. For your second rule, run a query, and select the GUPBN datasource. Drag the entire PropertyData group in the data fields for the GUPBN somewhere on your form (doesn't matter if it is ugly, we just want to see the values). Then preview your form. When you first see it, I'm guessing the PropertyData stuff will relate to the current user. Then click your button with the rules connected, after making sure that you have a user name in approving_mgrusername that is different from the current user.
I'm going to be travelling this afternoon, so I won't be around, but I'll check back later today or early tomorrow, so please do post if you have trouble.
Hilary Stoupa / Microsoft InfoPath MVPQdabra® Software / Streamline data gathering to turn process into knowledge