I figured out a dumb way to do it, but it's all manual.
You remove "registration" from your login dropdown, only have people be able to log in that way, can't register. Or you can remove the drop down box altogether and send people straight to
http://xenforo.com/community/login/
Then, you put the Clickbank button on a sales page you create, or in your sidebar, etc. The person clicks it and goes to Clickbank to checkout. Then you make your ClickBank "thank you" page be your Xenforo registration page here:
http://xenforo.com/community/register/ (replace with whatever your site URL is). So after someone orders via ClickBank they are sent to your sign up page and can create their account.
To prevent spammers and people looking for "freebies" you can change the URL of the page from /register to someone non descript like random characters /dwe2q3de2334d0 then manually approve each member when they join. That way, no one gets in unless they've paid. If a spammer tries to join, they don't get past the front door. You can say something like this on the registration page. "Thank you for joining, your order has been successfully processed by Clickbank. To complete your registration, please choose your username and password below. Your membership will be reviewed and approved within 24 hours (or less!). You'll receive a welcome email once your account is finished being set-up. Thanks for joining and we look forward to seeing you inside the members area!"
When someone cancels in Clickbank or their card bounces, etc., you get an email from Clickbank telling you, then you must manually shut down their access inside Xenforo and move them into an "expired" group. Next time the person tries to login, the "expired" person can be redirected to a special "renewal" sales page using this plugin: http://xenforo.com/community/resources/*******-redirect-on-login-logout.1385/
Once it's all up and running, you would have to approve new members and move expiring/canceling members to the expired usergroup. The approval you can do as they come in, shouldn't be too difficult with 1 or 2 sales a day. When you start getting like 10 sales a day, you'll have money coming in and can pay a developer to build you a fully automated connection. For the cancellations and expired, do those once a week. Give people a few extra days, it won't hurt and they probably won't even be on the site anyway.
Clickbank will attempt to renew the credit cards over a 1 to 2 week period if they bounced, so you need the extra time anyway. Or just let the expired people stay inside the site if you don't want to deal with the hassle of banning them. Purge them once a month on the 1st. Review your ClickBank list against your members list so everything matches up.
Yeah it's not sexy but it works and shouldn't take more than a few minutes of your day to manage.
What do you think? Is this a workable solution?