I am working on a site similar to this, with slightly longer subscription period. I haven't got all the pieces figured out, but here's what I do have:
Personalize snippet to hide members-only content
mhPaypal for payment through paypal (although it seems like you just need a bit of code from paypal for the button to do this well enough)
Subscribe (not SubscribeMe) for registrations, which I just started to mess with as my login snippet stopped working for some reason.
For the period issue, you will need to be sure that the registration date is logged, and then you are going to need I suppose a custom snippet that grabs your user database and searches for subscriptions that are perhaps 21 days old, and send out a notification to the user. Also the tool would disable accounts that haven't been paid up. This isn't super tough as its just grabbing the db and sorting.
Perhaps another way would be like a token for the user based on registration date that counts the time down? I haven't solved this issue yet.
You may also need to think about whether to activate the user on registration or require them to confirm their email. It could be important as customers may come back and say that they couldn't get in or whatever.
I also had to worry about people that wont confirm quickly and also wanted to prevent accounts from being deleted due to not being confirmed. So I put this in my login
&activationttl = `900`
&removeExpiredRegistrations=`0`
I was messing with the ttl to make it as long as possible, that seems to be when things broke, I haven't been back to fix it yet.
There are other concerns but I think I got the main ones. I do think the checker to know when accounts expire is an issue, and I realize now that you are going to need a special payment system for returning users, so that the username is fixed and the data about the payment is logged, if you follow my thinking.
Last but not least I expect to have someone make a tool for automatic registrations upon payment. I've asked some questions about the general concept here over the last few months. For my site, I didn't want to get any user info or anything, just pay and I will use that email for the registration. The payment will trigger email notifications, and I plan to grab that payment data, somehow find the user's email, and then push that into the register snippet.