Why not simply have your C code call a C shim that calls the appropriate Obj-C calls for the iPhone. This would be a separate library facade that acts as an isolating layer between the C code and the Obj-C.
That said, Obj-C and C are completely interoperable. They're not different like C and C++ (which has extern "C" to bind with C). Obj-C and C are, fundamentally, the same language. Obj-C has some runtime and "syntactic sugar" to facilitate its operations. But all of the structures and such are just that -- C structures and C pointers.
If you really wanted to, you can call the Obj-C runtime function to dispatch an Obj-C method. It can be done, it's just likely not worth the trouble.
I would assume that you have no problem adding C to your existing C code to access the GUI. So, I would either do the entire GUI in Obj-C and have it call your code as a library/service routine, or vice-a-versa. The former will likely be easier. Any callbacks that you code wants to make can be done call the C library shim to make the appropriate Obj-C calls.