Zunächst einmal: "...gesehen habe hängen" oder "...habe gesehen hängen" gehen beide gar nicht: in der zweiten oder dritten Vergangenheit schiebt sich z.B. ein Objekt immer zwischen Hilfs und Hauptverb:
Ich habe Dich gesehen.
bzw.
Als ich Dich gesehen hatte, ...
Zum eigentlichen Satz: ich bin kein Germanist, eher ambitionierter Laie, deshalb versuche ich es mal Schritt für Schritt:
im einfachsten Fall (und erstmal ohne die Überraschung am Anfang) könnte der Satz so lauten:
Ich habe gesehen, dass Dein Gesicht auf der Vernissage hing.
Das geht auch ohne den Nebensatz, und schreibt sich dann auch etwas flüssiger:
Ich habe Dein Gesicht auf der Vernissage hängen sehen.
Dabei schiebt sich also der Inhalt des Nebensatzes (Objekt, Ortsangabe und das zweite Verb) zwischen Hilfs- und Hauptverb des Hauptsatzes; die Verben von Haupt- (sehen) und Nebensatz (hängen) kommen jeweils in die Grundform.
Wenn wir nun wieder die Überraschung und den Temporalsatz mit dazu nehmen, greift eine weitere Regel: Objekt und Ortsangabe werden weiter nach vorne zwischen Subjekt (ich) und Hilfsverb (habe) gezogen, während das zweite Verb des ehemaligen Nebensatzes zwischen Hilfs- und Hauptverb des ehemaligen Hauptsatzes stehen bleibt:
Ich war überrascht, als ich Dein Gesicht auf der Vernissage habe hängen sehen
Anmerkung: ich kenne solche Formulierungen eher aus der Schriftform; ich glaube, ich kenne niemanden, der in einer Unterhaltung so formulieren würde. Das kann allerdings damit zu tun haben, dass ich in Süddeutschland lebe, da gelten im Alltag meistens ohnehin andere Regeln ;)
Anmerkung 2: Man kann das Ganze übrigens noch auf die Spitze treiben, wenn anstelle eines einfachen Verbs wie hängen eine zusammengesetzte substantivierte Form wie "Fahrradfahren", und vielleicht auch noch eine zusätzliche Zeitangabe hat:
Ich war überrascht, als ich Dich schon am Vormittag in der Stadt habe
Fahrradfahren sehen.
Gesprochen hört sich das dann an, als ob sich da doch noch ein Objekt zwischen Hilfs- und Hauptverb gemogelt hätte...