How can I check if a visitor can read a post?

Vistors usually always have the rights to access a post. Only exceptions that I know are drafts, password protected posts or post_types that are not public accessable.

You could use get_post_status() and post_password_required()