Ik heb het bedacht!
Blijkbaar heb ik het conversieblad gekoppeld is ofwel verkeerd of verouderd. Het blijkt dat een System.TimeSpan-object nodig is voor Npgsql om een juiste conversie uit te voeren naar een Postgresql "time"-object. Het lijkt me vreemd dat ze zouden proberen iets dat een verschil tussen twee tijden vertegenwoordigt, om te zetten in wat wij beschouwen als HH:mm:ss, maar zo is het.
In plaats van het type van mijn RunTime-eigenschap te wijzigen van System.DateTime in System.TimeSpan, heb ik in plaats daarvan een aangepast IUserType gemaakt en NullSafeSet overschreven om eruit te zien
public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
var obj = (DateTime)value;
((IDbDataParameter) cmd.Parameters[index]).Value = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second);
}