Perhaps it might be better to change your title to something that’s more relevant to the topic? ?? It will help others in the future who are searching for the same thing ^^
I did a quick search and came across a plugin that does ‘hide’ posts and pages very easily called Disclose-Secret; however, it seems with the the new 2.5.x series, the current version of the plugin only protects posts rather than pages, so am not sure how helpful it will be for you?
According to some of the comments, it seems as though the author is actively working on a new version.
An alternative is to actually create a brand new page using a template that only displays content if the user is logged-in. Credit for this is to a user called ‘strobb‘ on Experts-Exchange.com. I have not tested it myself, but it seems like an alternative solution.
<?php
/*
Template Name: Restricted
*/
?>
<?php get_header(); ?>
<div id="content">
<?php if (is_user_logged_in()) { ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="post" id="post-<?php the_ID(); ?>">
<h2><?php the_title(); ?></h2>
<div class="entry">
<?php the_content('<p class="serif">Read the rest of this page »</p>'); ?>
<?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
</div>
</div>
<?php endwhile; endif; ?>
<?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
<?php } else { // if user is not logged in, do the following ?>
<p>You must be logged in to view this page!</p>
<form action="<?php bloginfo('url') ?>/wp-login.php" method="post">
<table>
<tr>
<td><label for="log">Username</label></td>
<td><input type="text" name="log" id="log" size="22" /></td>
</tr>
<tr>
<td><label for="pwd">Password</label></td>
<td><input type="password" name="pwd" id="pwd" size="22" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Send" class="button" /></td>
</tr>
<tr>
<td><label for="rememberme">Remember Me</label></td>
<td><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" />
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>"/></td>
</tr>
</table>
</form>
<p><a href="<?php bloginfo('url') ?>/wp-register.php">Register</a></p>
<p><a href="<?php bloginfo('url') ?>/wp-login.php?action=lostpassword">Recover password</a></p>
<?php } // this closes the if statement ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>