Может так?
Код:
i:=0;
while ((v_name<>trim(edit1.Text)) or (v_password<>trim(maskedit1.Text))) and (i<3) do begin
... // Ждём пока в editы не введут что нибудь новое
Inc(i);
end;
if i=3 then Exit; //Ругаемся и выходим
Но поскольку Winda событийная, лучше на ввод в editы назначить обработчик и объявить глобальный счётчик попыток.