From a high level, for the PG connector it should work to interpret a change of the TX id in the "source" block from one to another as a committed TX. I.e. in a "processor" you'd collect all events until you see one with a different TX id, at which point you could create whatever aggregate you need based on the events you got until then.
The problem though is that ordering isn't guaranteed across topics, so you wouldn't be fully sure that no further messages associated to the same TX arrive on other topics. I.e. this would be a safe approach only if all messages that belong to the tables of one aggregate are sent to a single topic. And then of course there's the case where new TX is spawned for quite some time (or no tables you're capturing are altered), in which case you'd wait for a long time.
I'm sympathetic towards emitting "TX messages" (TX started, TX committed) to a dedicated topic and it probably should be the first step we take towards making aggregations simpler, though the ordering problem described above still remains.
Regarding your last reply, was this to say that it's something you're going to implement in code of yours, or something you suggest should be implemented in Debezium?
In any case, thanks a lot for bringing up this important topic, I hope we can support such use cases (which are very common) better going forward.
Cheers,
--Gunnar