Pues no sé que habré hecho pero ahora funciona bien con este código:
Código SQL
[-]Query->Close();
Query->SQL->Text = "INSERT INTO Imagen (Tipo, Registro, Posicion, Caratula) VALUES (:Tipo, :Registro, :Posicion, :Caratula)";
Query->ParamByName("Tipo")->AsString = TabControl1->TabIndex + 1;
Query->ParamByName("Registro")->AsInteger = nRegistro;
Query->ParamByName("Posicion")->AsString = Imagen->Name == "Caratula" ? "P" : "T";
if (Imagen->Picture != NULL)
{
Imagen->Picture->SaveToFile(AnsiString(getenv("TEMP")) + "\\Temp.jpg");
Query->ParamByName("Caratula")->LoadFromStream(::ImagenToStreamJPG(AnsiString(getenv("TEMP")) + "\\Temp.jpg"), ftBlob);
}
Query->ExecSQL();
Realmente es una mezcla del que puse yo y la sugerencia de Casimiro.