Or - fathom this - there's a problem with iMessage itself.
I've done numerous tests on iOS 5.1 with iMessage on an iPhone 4, where messages hang while "Sending" via a confirmed-working wifi network, where the recipient is on the same confirmed-working wifi network, either with a working iPhone 4S or a working new iPad, both running iOS 5.1, and who is sending multiple iMessages to my iPhone (up to ten, in one example) even while my message still shows as "Sending" to her device. The iMessages are coming through as Delivered to me, while my outgoing messages to that same person still show as "Sending".
When iMessage "Sending" hangs like this (which is too often for my own taste), the message will sometimes eventually say "Delivered". Of course, sometimes it will say "Not delivered" with the red exclamation mark. Sometimes it will say "Sent as text message" even though the recipient, again, is on the same fully-functioning wifi network and is fully capable of sending immediate iMessages to me, and others, via the same network I'm on.
To restate this in simple terms: The problem exists sporadically on multiple devices, even when on the same working wifi network, where one device encounters the problem, the other doesn't, and later, vice versa. Translation: This rules out cell towers, network issues, or device defects. What remains is the iMessage protocol itself.
Reboots, clearing out stored iMessage conversations, killing and restarting iMessage, turning off iMessage and turning it back on again, going into airplane mode and back again - none of these motions have any impact on the ongoing, sporadic, unpredictable nature of this problem. And before someone suggests there's a problem with my hardware, I'll point out that this is the third iPhone 4 I've owned in the past three months (unrelated issues leading to the replacements), all of which experienced the same problems with iMessage, on AT&T's wonderfully reliable 3G network (...) as well as multiple, unrelated wifi networks. It's also important to note that this problem periodically occurs on that aforementioned recipient's iPhone 4S, too. The only devices I have not seen iMessage hang on Sending is on the new iPad running iOS 5.1, and on the Messages (beta) application on OS X 10.7 (which I strongly recommend - it's great, and I look forward to its integration in OS X 10.8, although that's another topic).
So, to boil this down: Let's face it, iMessage is basically still in beta, and we're the beta testers. Giving advice to people like the guy above to "simply reboot" or whatever equivalently idiotic suggestion does no good but to provide more noise to people who are actually seeking out real solutions to this problem. Think about the user comment earlier in this thread that reads, "A simple reboot fixes it every time," or another one that reads, "Both of u need to turn iMessage off wait then turn it back on. Simple." That's your advice? Really? If a reboot or restart of iMessage "fixes" it, why do you still sporadically encounter the problem? It seems to me that a simple reboot or restart of iMessage "simply" allows you to evade whatever in the iMessage protocol is interfering with the message send, with the assurance that you'll encounter it again. I doubt Apple's design teams would consider regularly rebooting a device, or disabling/reenabling a feature, as a reasonable expectation for their users to get a particular function to work.
According to an AppleCare phone support technician today: "Yeah, I'm pretty sure iMessage is still in beta." Fair enough - it's too bad Apple isn't up front about that. And no good advice on fixing the problem.
By the way: Before anyone suggests turning off iMessage and using SMS instead: A number of the users I'm iMessaging with are using their Apple IDs (email addresses) for iMessage (rather than their iPhone numbers), which allows them to have an exact duplicate iMessage conversation thread on all their iOS devices AND on their Macs if Messages (beta) is installed. So, using SMS (Send as Text Message) is worthless, and iMessage is not reliable. Thought I'd preemptively point this out, because I know this is coming.