Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
I'm not a very good googler. Others in the office seem to find the right answer quickly when I can spend an hour searching and not finding what I want. Today I spend 2 hours trying to solve this problem.
When you have a secondary data source that uses a web service, InfoPath lets you specify the input parameters.
You can set the value here to any simple data type. However, it's not immediately apparent how you would set the value to a variable data item. In this case I wanted to fetch some data for the currently logged in user. This data is then used to pre-populate the form.
InfoPath has a username() function. To use this to specify the value to the web service you need to create a rule for the Form.
Ensure that the data connection for the web service has the "Automatically retrieve data when form is opened" option turned off.
The complete instructions for this were located here.