This happens when an image used in a campaign is from a web server outside of ActiveCampaign's domain. This triggers the image server on the subscriber's end to blocks requests from certain user agents, thus showing a question mark instead of an image.
To avoid this, we recommend uploading all images to the Content Manager, then embedding the images from the Content Manager to your campaign.