This one comes up a lot and there wasn’t any built-in way (that I knew of) to do this before Joomla 2.5. Now, it’s easy.
- From Joomla admin, go to Users > Groups and create a new group called ‘Guest’
- Still within Users > Groups, click on the ‘Viewing Access Levels’ and create a new Viewing Access Level called ‘Guest’ and assign only Guests to have viewing access
- Within Users > User Manager > Options > Component, set the guest user group to ‘Guest’
Now when you create content you’ll be able to assign it exclusively to non-members. Works nicely for modules, menu items articles and apparently plugins but I haven’t tested that yet.
Official info here (with pics): How do you hide something from logged in users?