Just saying.
You're absolutely right. A possible solution is to publish block information only after payments for that time period have been made.
That won't really fix the problem though, as there are probably other ways to achieve the same. Especially with eligius, where it's rather easy to identify if a block was found by eligius (search for non-fee transactions in the block. if there are none, it was most likely an eligius block. Not sure if this always works out. Maybe it also helps to see which pool returns a long poll result first.. Well, probably not.)
I like PPLNS, although I'm not into mathematics enough to tell if it has any flaws.