There are many possible reasons for this. Note that when you issue a DCC Send or DCC Chat, you are acting as the server and the other end tries connecting to your computer to get the information.
If you have firewall software installed, including WinXP's built in firewall, you have permit mIRC to "Act As a Server" or if no such option exists, you have to specify a range of ports that incoming connections are allowed to connect to. ALT+O -> DCC -> Options to set a matching range of ports. Eg, First: 12000 - Last: 12500 is a safe range that shouldn't interfere with other applications.
If you are connecting to the internet via LAN / Router / NAT, it is likely that the equipment actually connected to the internet is acting like a firewall, and you need to Forward a range of ports as mentioned above.
It is also possible that because you're behind a LAN, or for reasons simply unknown, mIRC isn't aware of your proper and current Internet IP Address. In ALT+O -> Connect -> Local Info, make sure you have [x] Local Host checked and (o) Server ticked. You can also do this by simply typing the /localinfo -u command.
Give these a try and see what happens.
At least I won lunch.
Good philosophy, see good in bad, I like!