Muchas gracias ElKurgan.
Efectivamente era el Datamodule el que mandaba el error, solo que seguía mandando el error si se trata de liberar después de hacer la llamada al "Execute" dentro del programa principal.
Entonces hice el DataModule1.Free desde dentro de la clase Execute del formulario, para que antes del Free que va a terminar con la ejecución del formulario se libere el DataModule, quedando de la siguiente forma.
Código Delphi
[-]
class function Tfrm_login.Execute: boolean;
begin
with Tfrm_login.Create(nil) do
try
w_intentos:=1;
Result := ShowModal = mrOk;
finally
DataModule1.Free;
Free;
end;
end;
Muchas gracias por tu ayuda, realmente fuiste una luz en un momento de oscura desesperación.
Saludos.