En fait, cette expression provient d'une confusion entre les verbes avaler et manger. En vieux français, avaler signifiait abaisser (cf l'aval d'une riviàre). Avaler son chapeau, c'était donc prendre une position humble, en retirant son couvre-chef. Comme ce sens a peu à peu disparu, on a pris avaler dans le sens de manger...