Starting in Joomla! 1.6 you can hide modules, menu items, content and other things from logged in users by using the Guest feature.
To make this work you have to go to the user manager and create a new user group, which we could call Guest (although it could be anything). Then create an viewing access level and also call that Guest (or something else if you would rather).
Then go to the user manager options and set the Guest Group to Guest (or the name you chose).
Then finally, assign those modules, menu items or content items which you want to only be visible to visitors who are not logged in to the Guest access level.
Now only users who are not logged in will be able to see those things.
Now, if we assign a menu item, module, or other object to the Guest access level, only non-logged in users will have access. For example, if we create a new menu item with access level of Guest, as shown below,
this menu item will only be visible to non-logged-in visitors to the site.
If required other user groups like Author can be granted access in the Guest access level, this would allow Authors to view articles in the front end for editing.
N.B. Login/logout in front end (for changing data in session) to see the change.