Hola a todos y gracias por vuestra ayuda.
Al final lo he resuelto separando DATA y TIME para cada evento, por si en algún momento pido algún intervalo entre dos fechas.
Código SQL
[-]
SELECT *
FROM lugares
WHERE ( DATE(visita)>='2013-01-21' AND TIME(visita)>='14:30:00' )
AND ( DATE(visita)<='2013-01-22' AND TIME(visita)<='15:45:00' )
AND (latitud BETWEEN (38.953619-0.65) AND (38.953619+0.65) )
AND (longitud BETWEEN (-1.858060-0.9) AND (-1.858060+0.9) )