I just did this, and It can be done two ways. One you Add a Decorator to the Member Object for approval and have all sign up forms write directly to the Member Class. This also means you need to creates a function in your Page.php that does an ApprovedMember Check plus Add a field to your Page Class that only Approved Members Can View.
A slightly more complex way is to Do your Member Decorator then create a Registration Page with with a DataObjectManager that stores Member Applications and writes them to the Member Class only after they've been approved. This way you can use the standard CurrentMember control in Templates and the Who Can View this Page option in the CMS.
The attached file require the DataObjectManger Module installed. Hopefully I Didn't screw up the syntax when I Deleted the Site Specific Objects for my site.
There is a Member Decorator, a Registration Page and DataObjectManager That has an Approval Button.
You also need to add this line to your _config.php so that your decorator is recognized
Object::add_extension('Member', 'MemberDecorator');
These files were made with a lot of help from UncleCheese and willr so I can't take all the credit. Hopefully my in-ellegant code isn't too bad