Con Cookie es una opción, aunque las cookies pueden eliminarse y esto dejaría de limitar los intentos.
En la base de datos del usuario (donde verificas usuario y contraseña) puedes añadir dos nuevas columnas:
intentos y
intento_fecha
En intentos pones valor inicial 0, y que incremente por cada intento fallido. Compruebas si es mayor que 3 (o los que quieras) y, si lo es, no le dejas al usuario seguir.
En intento_fecha guardas la fecha del último intento, para compararlo con la fecha actual. Con esto consigues que esté un tiempo sin poder intentarlo de nuevo. (Si ha pasado el tiempo asegúrate de poner intentos a 0 otra vez para volver a contar)
Suerte