Disallow purchase if coupon code is not entered?
There is no easy way to do this sadly, your best bet would be to try and play around with hook_form_validate or hook_form_submit on the ubercart form submit and see if you can find the field values in one of the submitted panes.

If that doesn't work then your best bet would be to try and code your own "pre review order" coupon box, that hooks into the cart view page. So what I am thinking is


Users goes to /cart
Has the listing of the items in the cart
Has the "coupon stuff" at the buttom, but part of the "Checkout" form (use
form_alter for example)
And use the hook_form_validate hook to verify it has data, and the coupon is good, then proceed