Ciao. Mancano alcune condizioni:
Nell'Html hai inserito un Header, che, anche se vuoto, verrà interpretato come una riga (di titolo) in più
Di solito io uso il RowDataBound, ma funziona anche il RowCreated.
Prima però devi controllare che ci sia almeno una riga di dati, altrimenti il gridview non verrà creato.
Poi, nell'evento scelto (RowdataBound o RowCreated), devi escludere la riga di header, che non ha nulla e quindi restituirà sempre un Image = null
Il tutto diventa quindi:
Spero che ora funzioni!
Un saluto,
Paolo