You could perhaps:
1) Create the category for your Private posts, e.g. “Private”
2) Exclude the “Private” category from your main Loop
3) Output the “Private” category using a custom template file, e.g. category-private.php
4) Wrap the Loop in category-private.php
in an if ( is_user_logged_in() )
conditional
(This assumes, of course, that you are the only user of your site. You will need to modify if you have additional users.)
EDITED TO ADD:
5) Wrap the Loop in single.php
in an `if ( is_user_logged_in() || ! is_category( ‘private’ ) ) conditional.
6) Add an exclude=#' argument, where
#is the Category ID of the "Private" Category, to any call to
wp_list_categories()`.