Unfortunately it looks like this changed quite a bit in WP3.5 when they upgraded the media library. That filter's $form_fields parameter doesn't contain the defaults any more. The only solution I've found so far is to forcibly remove the markup from the view using buffering:
This is extremely fragile - any change to the WordPress core might break this
function wpse45562_remove_media_fields( $buffer ) {
// remove the 'caption' block
$buffer = preg_replace( '~<p>\s*<label\s*for="attachment_caption">.*?</p>~ims', '', $buffer );
// remove the 'alt text' block
$buffer = preg_replace( '~<p>\s*<label\s*for="attachment_alt">.*?</p>~ims', '', $buffer );
// remove the 'description' box (and label separately)
$buffer = preg_replace( '~<div\s*id="wp-attachment_content-editor.*?</div>~ims', '', $buffer );
$buffer = preg_replace( '~<label\s*for="content">.*?</label>~ims', '', $buffer );
return $buffer;
}
function wpse45562_media_strip_buffer_start() { ob_start("wpse45562_remove_media_fields"); }
function wpse45562_media_strip_buffer_end() { ob_end_flush(); }
add_action('admin_head', 'wpse45562_media_strip_buffer_start', 10, 1);
add_action('admin_footer', 'wpse45562_media_strip_buffer_end', 10, 1);