Other idea ... get all unique entity_id
(product Ids) from catalog_product_entity_media_gallery
table and use result to filter collection.
$resource = Mage::getSingleton('core/resource');
$read = $resource->getConnection('core_read');
$query = $read->select()
->from($resource->getTableName('catalog_product_entity_media_gallery'), array('entity_id'))
->distinct(true)
->group('entity_id');
$result = $read->query($query);
$productIds = array();
while ($row = $result->fetch()) {
$productIds[] = $row['entity_id'];
}
For your collection
$collection->addIdFilter($productIds);
Edit:
$collection->addAttributeToSelect('small_image, thumbnail, image');
$collection->addAttributeToFilter(
array(
array('attribute' => 'image','neq' => 'no_selection'),
array('attribute' => 'small_image','neq' => 'no_selection'),
array('attribute' => 'thumbnail','neq' => 'no_selection'),
)
);
Note: for performance I'd use first approach.