@badjob:
Again, just because you haven't reached the point where no more new connections are accepted does not mean you are not affected. Run amule for 2 days and then use netstat as described above. I would be surprised if you had no stuck connections by then.
The patch is rather simple. Open wxWidgets/src/unix/gsocket.gpp and go to line 533. It should look something like:
(listen(m_fd, 5) != 0))
change it to
(listen(m_fd, 128) != 0))
128 is the maximum allowed and it will result in amule tolerating up to 193 stuck connections.
Looking forward to your GUI patches...

@davenull:
The problem is that it is the underlying low-level os code that is causing the trouble. There is not much we can do about it, except for coming up with work-arounds like increasing the limit for stuck connections.
EVERY single p2p app I've tried so far is affected by this. They only differ in the time it takes until the problem surfaces. Mldonkey for instance tolerates 31 stuck connections per default while an unpatched amule tolerates only 8. Azureus (a BitTorrent client) tolerates 193, which is the maximum, and therefore needs pretty long until no more new connections are accepted.
Rumor is that 10.4.3 will contain a number of fixes on network code, so if we are lucky the problem will be history soon. If not, we have to flood Apple with bug reports...

So in the meantime I suggest you try the most recent cvs binary I posted a couple days ago. It allows for 193 stuck connections instead of the default 8, so you don't have to restart amule that often.