Thanks for all your responses. In the end I have found that it is the CheckPermissions method call that is causing the problems. As soon as you are authenticated then you lose access to Public Anonymous User pages as soon as you login in, therefore you must be assigned to a new role (e.g. Registered User) that has the same rights as the Public Anonymous User. I just need to make sure that a new user is automatically added to that role as soon as they register.
I have followed Arjan's advice, but am still not entirely happy with this solution. Someone please tell me if there is a better way to make all items/pages etc available to everyone (authenticated or not), unless a particular item has broken page permission inheritance and stipulated specific access for named users and/or roles.