I think BTCGuild was accused of this recently.
The bottom line is, yes, it is possible, and no, you couldn't detect it if it was well-hidden.
If you use a PPS derivative reward scheme it doesn't matter.
Since the operator has only two options, to pay for your submitted shares or get labeled as a scammer
No, he has a third option:
Relay every 1000th share from another pool to his own miners and always answer "invalid" to the solution sent from the miner. while relaying the correct solution back to the other pool/solo miner.
This would increase stale shares by only 0.1% (not really detectable) while increasing the operator's income potentially a lot (a lot of pools only take the mined transaction fees as income, which are ~0.5% of a block - if you can earn 0.6% instead, you get 20% more!).
Of course you could also tune this, depending on the true stale share rate - the lower it is in reality, the more the operator is free to cheat.
This can ONLY be detected, if miners monitor the true difficulty of the shares they submit (which none do I think, as it costs a bit of CPU power) and also pay close attention to the blocks that the pool solves.
As miners cannot currently choose or verify which transactions go in their getworks, there's no way for them to be sure if they don't find the block themselves.