Great question and one that I have never ever seen before! :)
The really simple way to do this is to use a conditional Print View. Define a print view that is wrapped in one big conditional section. If the field is blank, you hide the section and instead display some message like "form is not complete - please make sure all required fields are entered and try again". The user will see that when they print. It's an easy trick which doesn't require a ton of work. In the Designer, go to Design Tasks and click Views. At the bottom of the task pane, choose "Create Print Version for this View". Add an optional section to your data source. Copy all of the controls into it. Double click and add the conditional formatting so that it doesn't show when the form is not filled out.
To prevent the actual printing will require more work. You'll need to write code to intercept the On Print event and then check the error board and see if any fields are present. I forget whether OnPrint requires Full Trust or not (Tools->Form Options->Security)...