I've had a similar problem; SharePoint/InfoPath doesn’t seem to deal with multiple-selection list boxes very well (unless I'm also missing something). The workaround I used w/o code was to create a new hidden field with the default value set to:
eval(eval(MultiSelectField[. != ""], 'concat(., ", ")'), "..")
where MultiSelectField is your field
Tick "refresh value when formula is recalculated" this produces a field with all the values selected in it separated by comma's that can be then displayed in SharePoint instead of the multi-select field.
This does have the problem of treating "option1", "option2" and "option1, option2" as 3 different unique strings for the purpose of sorting and filtering as "option1, option2" is now a string rather than two strings displayed as a comma separated value. I'm still looking or a nice fix to that.
Edit: Just remembered that you also have to add a rule to your multiple selection box that triggers when the field changes. This rule should set the value of your hidden field to the eval function above. You need this rule and the default value to be there or when the user ticks and unticks options the box will not update correctly.