Si meten una letra el stream va a estar marcado con error, cin va a ser cero. Con clear limpias todos los errores y con ignore te saltas las letras que hayan puesto (en este ejemplo hasta encontrar el \n, salto de linea).
Código:
float numero;
while(!(cin >> numero))
{
cin.clear();
cin.ignore(INT_MAX, '\n');
}