@houseink
Most definitely try s2member as @mercime suggests. It's been recently updated (again!) with a whole bunch of new, powerful features. It also fully supports access restrictions for 5 membership levels: 4 paid levels and free membership.
Take a look on my site at http://rspace.org to see how I've set it up. Try to visit anything to do with members: directory, profiles, member lists in groups...
It's an extremely flexible plugin and very well documented. Great for both experienced programmers and total noobs... like me :-)
Have fun!