When you send a message through CDO, you have to point it to a "gateway" device. Normally CDO sends messages using SMTP protocol, which does not require it to go through another program (like Outlook or Outlook Express). That is true because SMTP is a simple protocol that can be easily handled in-line. In fact, assuming you could find the right "socket" you could even build the mail transmission yourself using VBA. But CDO does it cleaner and better.
Therefore, to say that Outlook Express hangs Access makes no particular sense. Do you have error trapping enabled? If so, do you get any errors?
My first guess at analysis would be to set a breakpoint in the routine where you do the .Send to identify which line "breaks" everything.
EDIT:
@Minty - yep, both of us suggest stepping through the code. Great minds, great timing.