How do I hide specific node fields to users not registerd to that specific node? I am building a site with a course content type. Users can only view some of the course details (such as date, location and description) unless they are registered on the course. Once registered their is certain webforms and file downloads related to the course which they can access too.

A company admin user (sponsor) should be able to access specific courses, and if they have access to a course they can invite people (delegates) to register on the course. Basically each individual course is by invite only.

I'm a little confused as to how to build this. I assume Organic Groups, and/or Entity Registration may be the right direction, but I've never actually used either Module. Does anybody have any suggestions on how I can build this? Which Modules should I use and does anybody have any tutorials or references which may help in this specific area?
You need  to use Field Permissions module, with the help of this module you can do your stuff. Which allows site administrators to set field-level permissions to edit, view and create fields on any entity. With this module you can hide the certain node field to anonymous user.




  
  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.