In almost all cases that DCC sending and chatting mess up, the initiating (sending) party causes the troubles. In all cases where DCC Send or Chat stops functioning (suddenly) or never worked at all, this is caused by wrong Local Host and/or IP Address settings at the senders side.
(The Local Host and IP Address settings are found in the File/Setup/Local_Info menu.) Typically in the case that your IP Address is not correctly set, the other party will get your dcc message and then try to confirm and connect to your incorrect IP Address. Of course,
this doesn't work and you both sit there waiting. You will see the "Waiting for acknowledgement..." for ever while the other person -did- acknowledge correctly. You have a wrong setup, not the other person. This normally is a very simple to solve problem.
Also if you cant get files from another person ask him/her to check the IP Address settings in his/her IRC client.

A good cure to solve these DCC problems is to start with this :

Disconnect from your IRC server.

Clear the current text in the Local Host and IP Address boxes under File/Setup in the Local_Info dialog.

Select both 'On connect, Always get' Local Host and IP Address options in the Local_Info dialog.

Set 'Method' to Normal.

Leave the Local_Info dialog and the File/Setup menu both with 'OK'.

Reconnect to your IRC server.

If this doesnt work experiment with the 'On connect' .. settings... !! ie. For instance, try to set your Local Host address by hand and let mIRC look for only the IP Address on each startup.
If you still cant get it to work try to use the 'Server' method instead of the default Normal one. (Read what this does in section 6-3)!

Everybody...

Check your time-out settings! Make sure that your time-out values in DCC/Options are set large enough!! "Get/Chat Dialog time out after" and "Send/Get Transfer time out after" are recommended to be set to at least 60 and 120, respectively.

In case you never ever managed to get sending files or initiating a DCC Chat to work, not even after studying all these hints, it might be that your provider blocks these DCC connections by the kind of internet access they give you.
Known to give problems are TIA, Twinsock, Slipknot and SLiRP. Also the use of a Firewall by your provider or a Proxy on your local network will often block DCC connections!!

If you use TIA or Twinsock or Slipknot ...

If you use TIA (The Internet Adapter) or Twinsock, at this point you cannot use DCC send or initiate DCC chat (with any IRC client, not just mIRC).
You may want to try SLiRP or vTCP. SLIRP was the first SLIP emulator to allow DCC sending and initiating DCC chat. (As you know DCC get should always work fine, whatever connection you have. Besides firewall blocking you that is.)
Virtual TCP is tested and proofed to allow DCC sending and chatting. More info http://blitzen.canberra.edu.au/slirp and http://www.infoexpress.com/vtcp.html

If you use SLiRP ...

With SLiRP (currently running 0.95j) set File/Setup/Local_Info/ 'always get local host' on connect to Active, IP Address should be the fake IP used for SLiRP (10.0.2.15 usually).
Then DCC Send, Chat, and everything else should work perfectly fine, even on Windows95/98 with the Dial-Up Networking. (thanks Dave!)

If you have Dynamic IP...

If you have dynamic IP (your IP address is different each time you log on), make sure that "On connect, always get:" in the File/Setup/Local_Info dialog is set to get the Local Host and IP Address. If these were already set to ON make sure the correct 'local host' name and 'IP Address'
are found by mIRC... on some winsocks this is rather tricky... Also try the 'Server' method! If you have a non-compliant stack, mIRC may not be able to correctly find your local host (domain name) and IP. With dynamic IP addressing you are in trouble then !! DCC file sending and initiating a DCC Chat
(contrary to file getting and accepting a DCC Chat) requires that mIRC knows your correct IP number. Even without an IP number at all, mIRC will work as far as normal chatting is concerned, but won't allow DCC file sending or initiating a DCC Chat.

If you have Static IP...

If you have a non-compliant stack, mIRC may not be able to correctly find your local host (domain name) and IP. In the File/Setup/Local_Info dialog, uncheck the options to "Always get the 'Local Host' and 'IP Address" and manually enter your correct Local Host and IP.

A known Windows95 bug causes a lot of people to report that mIRC (and any other IRC program) gets/finds the old (now wrong) Local Host name and/or IP Address after switching Internet provider. This blocks their capability of DCC Sending files and Initiating DCC Chats.
If, for some reason, no matter what you do, mIRC picks the user ID (Local Host name) from the Internet Service Provider that you no longer wish to use this is fixable by editing the registry. If you open Regedit and look at MyComputer /HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/MSTCP you will see the Domain and NameServer fields from your old provider.
These fields will persist even if you uninstall Dial-Up Networking and re-install and go through the TCP/IP settings again ! The best way to solve the described problem is going to Start/Settings/Control_Panel/Network/ double click on TCPIP/ select DNS_Configuration/ and set the HOST field to the hostname (ID) you have on your new provider.

If you use Windows95/98 mIRC allows you to send long file names with spaces in them, but other IRC programs very often can not handle this. This might cause your transfers to fail. You might want to select mIRC's option to fill (up) spaces in such a long file name by an underscore.

Some people experience DCC File Send problems with mIRC on a windows system with Norton Desktop installed. mIRC then suddenly shuts down completely (sometimes with an error message) as soon as you try to select a file to send.
The problem is that Norton Desktop's feature called 'File Assist' conflicts with mIRC's DCC Send dialog. If you shut off File Assist entirely it will allow DCC transfers fine.
Even just disabling the "3D look and feel" in the File Assist options menu helps already.

Another program known to give DCC Send problems is a software package called Long File Names by View software. It is something you might be running in the background and you might never think of it as the cause of your troubles.
The problem is that when you use the DCC Send option in mIRC, the dialog that pops-up doesnt allow you to select files so you can't send anything. Selecting files is blocked by LFN and if you disable the LFN software all your DCC problems will be solved.