Public CiviCRM forms not working for anonymous users
After a long frustrating debugging I found the answer on this two pages:

Installation and Configuration Troubleshooting

Anonymous Users Cannot Contribute


  For Drupal sites, ensure that uid = 0 exists in your Drupal users table. This is required for anonymous access to CiviCRM pages and forms to work properly.