Because the 'h' is silent in honour (or, in America, honor).

Sometimes 'an' is used even if the 'h' is aspirated, as in "This was an historic occasion."


As I understand it, an 'An' should be used before words that sound like they start with a vowel.

This can lead to ambiguity like 'SQL database'. This could either be written as 'an SQL database' or 'a SQL database' depending upon whether you pronounce SQL as 'S-Q-L' or 'sequel'.