How to postpone access check to theme hooks?
Take a look at the Field Permissions Module:


  The Field Permissions module allows site administrators to set
  field-level permissions to edit, view and create fields on any entity.
  
  Features
  
  Enable field permissions on any entity, not just nodes. Role-based
  field permissions allowing different viewing patterned based on what
  access the user has. Author-level permissions allow viewing and
  editing of fields based on who the entity owner is. Permissions for
  each field are not enabled by default. Instead, administrators can
  enable these permissions explicitly for the fields where this feature
  is needed.


EDIT

Based on comments, either create a module using this or add this to a template.php file and adjust as necessary:

function THEME_OR_MODULE_NAME_node_view_alter(&amp;$build)
{
    global $user;
    if($user-&gt;uid == 0)
    {
        if($build['#node']-&gt;nid == 1) // add node id's you want hidden here
        {
            if(isset($build['field_image']))
            {
                unset($build['field_image']);
            }
        }
    }
}


This example will hide the field_image field on the node id = 1 only for anonymous users. Use the machine names for the fields found on the manage fields tab of the content type.

If you prefer a UI ready option, you can look at the Content Access Module


  This module allows you to manage permissions for content types by role
  and author. It allows you to specifiy custom view, edit and delete
  permissions for each content type. Optionally you can enable per
  content access settings, so you can customize the access for each
  content node.