How to setup a multilevel paid membership site

So, what I would like to do, is make a membership site with several paid membership levels. When a user first signs up and pays to be part of level 1 membership, be will get access to for example the blog of the website. For him to get access to the next membership level 2, he will have to first complete a online course, and also pay the new membership fee for the next level. He will then now for example have access to the blog of the site, and now also the Wiki of the site. To access the next membership level 3, he again has to take a new course and pay the new membership level 3 fee, and in addition get access to the websites forum.. and so on etc. The member will have to pass the course to get access to the next level of membership. Also, the member should not be able to know what the next membership level will get access to, before he has completed the online course.

Could someone please suggest to me how this would be possible to set up using Wordpress? What plugins would be suited to keep track of the members progress and status, and the different membership access privileges. And how I could make a online course using Wordpress? I guess this would involve using BuddyPress, not sure about MultiSite just yet, but one membership level might allow the member to have their own site with blog etc.