The "Y" object in this instance cannot be accessed because the Field, "X" is not visible to the User but the Field visibility is needed. This is because the Profile of the User getting this error cannot see the appropriate Lookup Field designated by "X". This is either because Read access is absent for the Object that contains the relevant lookup field "X", or because Field Level Security on that field itself is set to block read access.
If you use Field Level Security on a Lookup field and the user has read permissions on that Object, the conflicting permissions will cause this error.
In this example, our Admin User was trying to restrict Users from changing which Project a Purchase Order was related to. The Admin user hid the Project Lookup Field using Field Level Security. This caused the above error.
Navigate to the Purchase Order object by going to:
Setup > Create > Objects > choose Purchase Order
Locate the Project Lookup Field
Click Set Field Level Security for that Field
Be sure to make the Field Visible to the Profile(s) receiving the Error
Save your Changes