I had a similar issue on an iPhone 3G, nothing would address it and I didn't feel competent enough to try the jailbreaking option - in the end, I re-downloaded all the apps through iTunes (realtively easy to go screen-by-screen on the iPhone) and then checked the "sync apps" box on the "apps" tab of my iPhone in iTunes.
I pressed "Sync" and then - by accident, I have to admit - cancelled the sync within 10 seconds of it starting and was very surprised to see that the iPhone now looked fully sync'd!
I then pressed "Sync" again and - to my great surprise, the phone started syncing and, after about 30 minutes, was finished, apps and all.
I did NOT loose any app data or any settings!
Clearly, this could have been a fluke but might be worth trying before going down the jailbreak route or anything more drastic.