I beleive it is possible.
You have to be a bit sneaky though.
There is no way to block printing, however you can control printing. In each view you can set which alternate view to use when they print.
I will assume you are using a AD web service to identify the user, so you know if it is the "final end user" or not. Or you are tracking the form state or both.
The last state, where you want them to print, set the print view to use for printing to the one you want. So the end user can print as desired.
For the other users or states, set a view which is blank, or just says you are not authorized to print this or something. Then set the all of the rest of the data entry views to use this as their print view in view properties.
If you currently only have one data entry view you would need to create a new view and then copy everything from one to the other to make a replica of it to be used at the end. The user won't know the difference but then you can have the print functionality you want.
Good Luck.