I have had this issue with both pm-suspend and closing the lid - except for in my case the wake up would happen 50-90 seconds after suspend. Just long enough for me to have stuffed the laptop in my bag where it has no chance of cooling itself.
After lots of searching, and even writing a work-around program which would invoke "pm-suspend" when the lid was closed I found that something other than the lid could wake up the machine:
root@host:~# cat /proc/acpi/wakeup
Device S-state Status Sysfs node
P0P2 S3 *disabled pci:0000:00:01.0
PEG1 S3 *disabled
EC S3 *disabled
GMUX S3 *disabled pnp:00:07
HDEF S3 *disabled pci:0000:00:1b.0
RP03 S4 *disabled pci:0000:00:1c.2
ARPT S4 *disabled pci:0000:02:00.0
RP04 S4 *disabled pci:0000:00:1c.3
RP05 S3 *disabled pci:0000:00:1c.4
XHC1 S3 *enabled pci:0000:00:14.0
ADP1 S3 *disabled
LID0 S3 *enabled
root@host:~# echo "XHC1" > /proc/acpi/wakeup
root@host:~# cat /proc/acpi/wakeup
Device S-state Status Sysfs node
P0P2 S3 *disabled pci:0000:00:01.0
PEG1 S3 *disabled
EC S3 *disabled
GMUX S3 *disabled pnp:00:07
HDEF S3 *disabled pci:0000:00:1b.0
RP03 S4 *disabled pci:0000:00:1c.2
ARPT S4 *disabled pci:0000:02:00.0
RP04 S4 *disabled pci:0000:00:1c.3
RP05 S3 *disabled pci:0000:00:1c.4
XHC1 S3 *disabled pci:0000:00:14.0
ADP1 S3 *disabled
LID0 S3 *enabled
root@host:~#
After this, pm-suspend worked (did not wake up again after a few minutes) and the lid did too.
Since the wake-up happened only a few seconds after the light in the keyboard (it's a macbook pro) went out - I assume the culprit "XHC1" must be the keyboard - which also explains that if I suspend with pm-suspend I cannot wake it by hitting normal keys, only the power button.
sudo -s
thenecho 'XHC1' > /proc/acpi/wakeup
thenpm-suspend
?