It really can't hurt to play with the crazy XPath capabilities within InfoPath. This is documented in many places, starting:
Which offered possibly the best explanation of how this technique with Eval() actually works. I prefer to remembered this as PURE VOODOO.
1. Create our SharePoint list
2. Create a secondary data connection to the list
3. Drag the dataFields section into the form, to create a common binding parent
This step makes step 4 a lot easier, since the Eval loop is relative and works on the repeating section inside the dataFields section.
4. Add expression box within this Section
The Expression is:
xdMath:Eval(xdMath:Eval(d:SharePointListItem_RW, 'concat(d:Title, ":")'), "..")