How do I find out what application is trying to wake my MBP?
Macs will wake up in response to many hardware events. Changing a USB/Firewire/Thunderbolt cable or even plugging in / powering on a connected device will wake Macs that are sleeping. Keyboard presses, clamshell sensor detecting an open of the display lid will also wake up a sleeping Mac. These are pretty well known and obvious, even if you don't realize a pet or power fluctuation can cause a wake event.
Two software items will also wake a sleeping mac and both rely on the power management / system management controller. Both are seen in the Energy Saver preference pane. This is how applications can do the same thing as hardware and wake your mac.
For macs with a battery - the power adapter needs to be connected and powered for much of this to work. The Wake for network access is both the standard WakeOnLan (WOL) as well as Apple's Bonjour Sleep Proxy. I like the article About Wake on Demand that explains how Apple has extended the concept of WOL and made a service.
If you disable these two items - software can no longer wake your sleeping mac and you can know if it's a hardware event or a software event. The other answers go into how to look at the logs to know which event has made a specific wake up request. Hopefully this helps frame the bigger picture of how your mac can take a cat nap with one eye open.
One way would be to have /Application/Utilities/Console.app running and when you MBP awakes, check the logs. It will normally log a reason for wakeup, e.g.
06/08/2011 13:42:39.000 kernel: Wake reason: EHC1
06/08/2011 13:42:39.000 kernel: The USB device HubDevice (Port 1 of Hub at 0xfd000000) may have caused a wake by issuing a remote wakeup (2)
06/08/2011 13:42:39.000 kernel: The USB device Keyboard Hub (Port 2 of Hub at 0xfd100000) may have caused a wake by issuing a remote wakeup (3)
06/08/2011 13:42:39.000 kernel: The USB device Apple Keyboard> (Port 2 of Hub at 0xfd120000) may have caused a wake by issuing a remote wakeup (3)