Somebody with more knowledge may want to chime in, but I have a few random thoughts...
1) If you're using 'thread per connection' and your callback just isn't getting called AT ALL... Is it possible that you only have 1 thread allotted and it's already being consumed by another request? I.e., what does your call to 'MHD_start_daemon' look like? Do you have a connection limit set? What about a connection timeout? (If you have a connection timeout, try reducing it to something really short - see if the symptoms improve.)
2) On the browser side, use something like Firebug (for Firefox) or Chrome's built-in tools and see what it thinks is happening to the connections/requests.
3) Try make sure all your 'GET' requests are working properly before diving into 'POST' (which tends to be much harder - at least it was for me).
4) That connection callback is a little funky because it gets called twice for every request. I'm assuming you're handling that, but just keep that in mind.
5) Finally - I think the 0.9.45 release had something in it that fixed a minor bug with thread-per-connection. I haven't tried updating to it yet (I'm a version or 2 behind right now), but if you're pretty sure your code is correct you could always try rolling back to an earlier version - see if a regression of some kind was introduced. (Unlikely, but 0.9.45 hasn't been out very long so you never know.)
As a side note - MHD is a really great library. It can be a little challenging to get your 'web server' working initially, but I've found that it performs really well and is very reliable once you do.