I have resorted to brute force in the past. By which I mean destructive removal of the pins. I use a Dremel tool with a 2mm drill bit or 3mm router bit to carve away at the pin until it disintegrates.
The new style pins sell for about 0.3c each on Bricklink, so if you're assembling a model it makes sense to just buy a pile of new pins and and use those instead. I use the pins as "stuff" for my construction models to work with, so I bought 10,000 pins in one hit for about $50 including delivery. It's just not worth putting the old pins into newly assembled models when it's so cheap to avoid the problem.
To actually remove the pins when they are stuck I use the approaches other people have given. When they fail I use olive oil as a lubricant (soak Lego in oil, wait). That's much easier if you can keep the end you're going to be pulling on out of the oil. Then use the "jam a bar into the end" technique to lock the pin into another Lego beam and pull it out. Usually twisting is required.
But I have to admit that I don't bother any more. I pull models apart, and pins that I can't get out with my fingers I just drill out. If I really have to I'll buy more old-style pins on Bricklink, but I have enough friends who buy second hand Lego and hate those pins that my supply is adequate. And I'm happy to give away the new style pins in exchange. Again, they cost me 0.5c/pin...
The old pins are brilliant if you're exhibiting a model and it has parts that tend to fall apart. Use the "stuck forever" pins and things don't fall off nearly as easily. It's legal, so you can still put the "Model is 100% unmodified Lego" sign on it whereas if you use glue you can't do that.