Is there a theme function for is_password_protected()?

Yes there is. It’s post_password_required:

Whether post requires password and
correct password has been provided.