hola.
 
siempre va a ser true cuando sean igual pues tu condición así lo indica (SOLO MENORES, en ninguna parte excluyes MENORES E IGUALES. 
ahora yo que tu igualaría los tipos de datos, pero insisto en mi primera observación.    
Código SQL:
Ver originalIF CONVERT (VARCHAR, @fecha,111) < CONVERT (VARCHAR, GetDate(),111)
    BEGIN
    RAISERROR('La fecha es anterior al dia actual.', 16, 1)
    RETURN -1
    END