EXC_BAD_ACCESS is a hard error. It isn't an exception and you can't catch it.
It means your code has done something that tried to access memory that isn't valid. Most likely, by trying to dereference a pointer that is trashed. Over releases are a common way to achieve this kind of crash.
In this case, the cause of the crash is most likely because you are beating upon the user interface objects from a background thread. Nothing is thread safe unless the documentation explicitly says it is thread safe and, even then, there may be limits as to what you can do from a thread.
Given the fatality of the lack of a proper threading model, I didn't look terribly closely at the rest of the code. However, there were some obvious glaring problems with memory management; leaks and a likely over-release or two.
My recommendation would be to rewrite this code entirely. Start by considering how to break up the problem along Model-View-Controller [MVC] lines. Consider whether you can use the NSURL* and NSHTTP* classes to do the client/server communication -- if you can, they can be configured to do communications asynchronously.
As far as threading is concerned, you need to very carefully consider how to divide the problem up; how to move the bits off of the main thread while not performing thread-unsafe actions upon the main thread.