Please help I am getting desperate :( I would really appreciate any feedback at how to resolve this issue.
Try using ptrace/strace on the processes in question - it can often tell you where they're being held up - DNS lookup, opening a tcp connection, etc - and give you a good line on what to investigate.
"man imapd.conf" has more info on debugging cyrus using strace/ptrace; when it comes to your MTA you'll need to find that out separately.
I use this debug command in my imapd.conf:
debug_command: /usr/bin/strace -tt -o /tmp/strace.cyrus.%s.%d -p %2$d <&- 2>&1 &
which is from somewhere in the Cyrus docs.
Craig Ringer