It seems that TStringGrid is designed so that you can add columns only after fixed columns.
The error you get in the example is a minor bug: the HeaderClick routine should guard against referencing a nonexistent column.
I think the only "simple" way to add an image to a "fixed" column header would be to set FixedCols to 0, and add the columns you want (which would now include the very first one of course) with appropriate images in an associated imagelist.
Then you would have to paint column 0 to simulate the fixed look, and set the ReadOnly property of the TGridColumn with index 0 to True.