Ho l'impressione che ci sarebbero troppe varianti da considerare, per cui non è possibile definire una regola sufficientemente valida per stabilire se si tratta di un nome reale o meno. Personalmente non la ritengo una buona idea.

Ad ogni modo, come da tuoi esempi, puoi definire in generale che la stringa non contenga una ripetizione di caratteri uguali maggiore di 2 o vocali uguali ripetute o una sequenza di consonanti maggiore di 3.

Usando un pattern in un elemento input, potrebbe essere una cosa del genere:
codice:
<input required pattern="((?!([AEIOUaeiouàèìòù ])\2|([A-Za-z])\3{2}|[B-DF-HJ-NP-TV-Zb-df-hj-np-tv-z]{4})[A-Za-zàèìòù ]){3,20}">
In sostanza significa:
(?! ...)
non considerare (cioè risulta non valido quando trova le seguenti regole)
([AEIOUaeiouàèìòù ])\2 una stessa vocale o uno spazio che si ripete 2 volte
Es:
MaArco, PIPPO, Gaetano - validi
Maarco, Remìì, Alessandrooo, Sailor Moon - non validi
([A-Za-z])\3{2}
una stessa lettera ripetuta 3 volte
Es:
abbc, RrRaRrRa, Alessio - validi
aaaa, bbb, Alesssandro - non validi
[B-DF-HJ-NP-TV-Zb-df-hj-np-tv-z]{4} una sequenza di 4 vocali qualsiasi
Es:
qwerty, Albba, Gertrude - validi
sdfsdf, Allbba, Alessndro - non validi
[A-Za-zàèìòù ] considera qualsiasi lettera e spazio
Es:
asd FD gf ghhì, Federico Barbarossa, LOL- validi
Giovanni & Co., Pino45, Mariu' - non validi
{3,20}
la sequenza deve contenere da 3 a 20 caratteri

Chiaramente questo limita qualche input casuale o maldestro e dovrebbe escludere una buona parte di casi "non validi". Tieni però presente che se estendi l'utilizzo a persone con nomi stranieri, tali regole potrebbero risultare inappropriate.