Is there a way to password-protect part of a post?

I would do it the other way around: Put the always visible text into a custom field per metabox, and protect the post content with a password.

In your theme, always show the custom field, and let WordPress handle the password protection.

Sample code for the theme:

while ( have_posts() )
{
    the_post();

    if ( post_password_required( $post ) )
    {
        print '<h1 class="post-protect-notice">' .
            __( 'Protected Post', 't5_theme' )
            . '</h1>';
        the_excerpt();
        // custom field
        print wpautop(
            get_post_meta( get_the_ID(), '_always_visible_content', TRUE )
        );
    }
    else
    {
        // show regular content
    }
}