You can create extra calendars and categories, and then specify permissions at the calendar and category level to denote if a guest can access/view or not. Using this methodology you can create public and private areas, and dictate which areas each group can access.
You can do the same with activity streams by visiting System > Applications, expanding the "System" application and adjusting the module permissions. That said, it's worth pointing out that a user will only see content they can access in the activity stream, so allowing guest access isn't a problem from a permissions perspective.