Non mi risulta che ci sia una soluzione solo-CSS.

Puoi pero` risolvere sia lato server che lato client (la mia preferenza e` per il lato server).

Lato server (al caricamento immagine):
il programma che gestisce il sito, quando vede l'immagine ne valuta le dimensioni relative e la tagga come vert o orizz (devi associare tale valore all'immagine)

Lato server (al momento di inviare la pagina):
Se l'immagine e` gia` taggata, aggiunge la classe opportuna, ad esempio:
<img src="..." alt="..." class="vert">
E chiaramente nel CSS avrai le due classi:
img.vert { ... }
img.orizz { ... }

Se l'immagine non e` taggata. deve anche valutare le dimensioni relative

Lato client
Si puo` fare la stessa cosa tramite JS.


Per i dettagli di come realizzare la programmazione, chiaramente dipende dal linguaggio scelto. Valuta tu se hai la possibilita` di agire sul lato server (e in tal caso ti spostiamo nel forum che tratta l'interfaccia/il linguaggio che dovrai usare), o se preferisci farlo tramite JS.