Scenario - InfoPath form with data validation or with fields that have checked "Cannot be blank" will display a textbox above the field which can sometimes cover the label to the field the user is completing.  How annoying - right?  So let's hide those text messages but still keep the validation.

Note: Setting the field to "Cannot be blank" works best since there will still be a red asterisk on the field denoting it is a required field.  However using the data validation method would allow you to have a custom error message when the user tries to submit the form.

Here is an image of a form where the custom validation message is hidden.  Normally the validation message "Cannot be blank" would be sitting over top of the label "Title of Proposal:" - see below:

Here is a simple fix.

1.  Add a page viewer web part to a new blank web part page which will be used to display your InfoPath form.

2.  Click modify shared web part on the page viewer web part - update the link to point to the url for a new browser based InfoPath form in the link field.  You can get this url be simply going to the form library that you have associated your InfoPath form and click the new button.  Once the form opens in the browser you can copy the url from the location / address bar in your browser 

3.  Add a content editor web part to the page.

4.  Add the following in the source of the content editor web part:

<script type="text/javascript" language="javascript">
_spBodyOnLoadFunctionNames.push("HideErrorDivs");
 
function HideErrorDivs() {
var iframe = document.frames("MSOPageViewerWebPart_WebPartWPQ2");
var doc = iframe.document;
if(iframe.contentDocument)
{
  doc = iframe.contentDocument;
}
else if(iframe.contentWindow)
{
  doc = iframe.contentWindow.document;
}
 
 
var head = doc
    style = doc.createElement('style'),
    rules = doc.createTextNode('.errorDiv{display:none !important;');
 
style.type = 'text/css';
if(style.styleSheet)
    style.styleSheet.cssText = rules.nodeValue;
else
    style.appendChild(rules);
head.appendChild(style);
}
</script>

NOTE:  You will need to change the link of code that references your frame to match the name of your frame.  The line I am referring to is:

var iframe = document.frames("MSOPageViewerWebPart_WebPartWPQ2");

The id of the iframe is this case is MSOPageViewerWebPart_WebPartWPQ2.  More than likely the only part that will change is the number at the end of the id.  You can get yours by viewing the source of the page with the page viewer web part that is hosting your InfoPath form.