This is an ACL issue. If users can login, then register it is simpler. If you are allowing anonymous users then you have a tiny bit of configuration to do to enable anonymous users. Have to race out to a client for the day, i can send you info tonight with some screen captures, but also maybe you can look up the instructions in the manuals, it works quite nicely when configured. CiviCRM » Administer CiviCRM » Access Control
For more reference please give a read https://book.civicrm.org/user/current/initial-set-up/permissions-and-access-control/
Also can you just double check that you have the event checked off as a "public event".