There is a patch out there to allow libpq result processing by callback I think. Might be roughly what you want.
Not right now. libpq's state tracking wouldn't cope.
I imagine it could be modified to work with some significant refactoring. You'd need to track state with a shared fifo of some kind where dispatch outs queries on the fifo as it sends them and receive pops them from it.
I started on that for the batch mode stuff but it's not in any way thread safe there.
Yeah, it's possible. The protocol can handle it, it's just libpq that can't.