Custom participant fields not showing for anonymous users on event registration page
I solved this by granting the Drupal permission "CiviCRM access all custom data" to the anonymous user role as per the documentation at the bottom of this page: http://book.civicrm.org/user/current/events/creating-an-event/

Note: this is a really freaky label on this permission. I find it very difficult to tick a box for anonymous users to "Access all custom data". What?