tl;dr version: If you get an error on the order form, it will kick you over to PayPal after fixing it even if the amount due is $0. PayPal doesn't like this.

This is the process I have been able to replicate in Firefox 3.6.2 on OS X.

1. Log out of designtotheme.com.
2. Go to product page.
3. Click the "Buy Now" button.
4. Enter the coupon code and click Apply to Order
5. Click Checkout button.
6. Fill in every field in Customer and Billing Information except for State/Province. Not the only payment method is "Free order - payment not necessary."
7. Click Review Order.
8. Back at the form with error message.
9. Choose a State/Province. Note that the only payment method is now PayPal.
10. Click Review Order.
11. On order review page, click Order Now.
12. You are at PayPal, and trying to log in results in an error because it's trying to charge $0.

What I found is that it works if I go back from there. Click the browser Back button to go to the Order Review page, then the Back button on that page. This takes you back to the order form, with "Free order" as the only payment method once again.

NB: I really don't need their address if (1) there's no shipable item and (2) it's a free order. Can't we just hide all that stuff for free orders to avoid user error?