How to alter a field within an unlimited field collection?
Since Drupal 7.8 you can leverage hook_field_widget_form_alter. You can alter any field widgets provided by field_collection before the form_alter of the main form.

function my_module_field_widget_form_alter(&amp;$element, &amp;$form_state, $context) {
  if ("field_my_field_collection" == $element['#bundle']) {
    if ("field_my_field_collection" == $element['#field_name']) {
      $element['#access'] = FALSE;
    }
  }
// dpm(array($element, $form_state, $context), "field_name: " . $element['#field_name'] );
}