I think what you want is to check if a property of the asset is empty, rather than the asset itself, as a concept.
The following appears to work, and might be of interest if you think you have empty assets, or in this example, count filled-in ones:
{% set entries = craft.assets.filename(':notempty:') %}
Filled Count is {{ entries.count() }}
You could of course use any extra fields you've assigned to the Assets; as for checking attribution, photo date, rights, etc..
Does that match the problem you are trying to solve?
All right, adding on a deeper and also tested example, to solve the clarified problem, thanks.
If you think about the stacking of queries, the desired field to check for being filled in is nested within a target element field, and therefore can't be searched directly by an ElementCriteriaModel in present form. So, we use a for loop to access this set of images, limited by field values defined of their Asset, in this case a source where the image was obtained. The inner for loop just verifies which image assets those are, by title.
{% set params = { section: 'lodging' } %}
{% set entries = craft.entries(params) %}
{% for entry in entries %}
<p> {{ entry.title }}
count: {{ entry.images.imageSource(':notempty:') .count() }} </p>
{% for sourcedImage in entry.images %}
<p> - {{ sourcedImage.title }} </p>
{% endfor %}
{% endfor %}
I've used a param block to define the initial query. This makes it a little clearer how we are using first-level fields of the original entity, and don't at present have a way to operate on any multi-valued contents.
This picture should probably be documented more clearly, and I've put on my list for cookbook pages to be made.