One solution that is only partly automated:
You could make an excel spreadsheet of all the points and the relevant data for each (perhaps one column is 'image filename' in your case), then writing a custom python script (still outside the scope of the GIS tool) to turn it into a directory of html files styled just how you want. Then you can use the HTML annotation feature built in to QGIS to add one by hand for each point. Note that the HTML annotation tool doesn't take the full HTML spec, it's a pseudo-HTML processor but it comes really close.
No doubt there's a way to write a script for QGIS that would take the list of points and, if there are coords for each, automatically place all the HTML annotation objects. That would get you a lot closer. But, since you may want to resize / reposition each HTML annotation box, it may not be that big of a burden to skip this part of the automation.