Your firewall probably has an IRC module running that looks for the CTCP messages required to initiate a DCC, and changes the contents of that message so that the person you're trying to DCC connects to it instead of to you. It keeps track of your local IP and what port mIRC is expecting the connection on, and makes it transparent to you.

Try setting your lookup method to 'Normal' so that mIRC thinks its IP is your LAN IP, then initiate a DCC chat with someone. mIRC will send a CTCP with your local IP (192.168.1.101 or something similar), and whatever port you've got it configured to use, and open the port on your machine. The IRC Module on the router will detect this CTCP, open up its own port on the public side of your network for the client to connect to, and change the CTCP message so that it uses its IP and the port it just opened. When the recipient accepts, they'll connect to the router, and it will connect to your machine, allowing the transfer.

Note that most routers that include this module did not allow for RESUMEs, which use the IP and Port to match up the resume request to the pending transfer. Since the IP and Port mIRC sent out were changed by the router, when the resume request comes it, its got the router's IP and Port instead of the IP and Port mIRC is uses, so mIRC can't figure out what transfer is being resumed, and gives an Invalid Parameters error and the send will time out. The company that made your router may have fixed it with a firmware update, so you should check out their website for updates, but its most likely easiest to simply disable this IRC module, and use plain port forwarding to send ports 3000-3010 to your machine's IP.