There's no clear answer on your question. It highly depends on what you want to achieve.
With making a separate app, that only knows about images, you will have the following problems:
- You want different upload_tofor yourcarsandhouses. You will need to set it dynamically. Example.
- Your image model (the one with ImageField) will know about bothcarsandhouses, viarelated_nameproperty. I don't find it to be any good. To get rid of the backreferences, you can specifyManyToMany(..., related_name="+"). Note:"+"means no related name given and it shouldn't be auto-generated. But the reasonability of removing it is also questionable.
- One more app, that does... well, nothing. One more dependency for each of your apps.
On your place I would just leave both model images, one in cars, another in houses. That's considering the amount of boilerplate code you will have to write and amount of problems you would create for yourself out of nowhere.