I think it better, when you parse before triggered wp_head; maybe this one:
add_action('the_posts', 'cleaner_gallery_head', 0);
function cleaner_gallery_head($posts) {
if (empty($posts))
return $posts;
$found = false;
foreach ($posts as $post) {
if (stripos($post->post_content, '[gallery'))
$found = true;
}
if ($found)
wp_enqueue_style( 'cleaner-gallery', CLEANER_GALLERY_URL . '/cleaner-gallery.css', false, 0.7, 'all' );
return $posts;
}