I've got a LWQ-style qmail configuration, plus vpopmail 5.3.27 and courier-imap-126.96.36.19930902. I have roaming users enabled (as well as qmail-ext), and POP3 before SMTP works perfectly (using qmail-pop3d).
IMAP also seems to work just fine, but it does not update open-smtp. My workaround of creating a separate POP account to POP in without retrieving msgs allows me to send via IMAP, but is obviously not an ideal solution. (I'm using Thunderbird .2).
I've installed courier-imap numerous times (with different releases up to 20030902), both with authdaemon enabled as well as disabled. In both cases, the results are the same (meaning that I can read mail but not relay).
Perhaps my understanding is wrong, but I was under the impression that since these are virtual domains I'm having trouble with (all my domains are virtual), the fact that I am able to read mail at all under IMAP would indicate that vchkpw is being called from courier-imap. Since qmail-pop3d invokes vchkpw and works, I'm puzzled. I'm afraid I don't know where to look log-wise.
Probably the same old problem of courier not detecting roaming users.. Try this:
cd (patth to courier) (cd authlib ; make clean) export CFLAGS="-DHAVE_OPEN_SMTP_RELAY" make make install