Also as I understand, selfish mining is when a miner finds a block he keeps it secret for some time, just to have a head start at finding the other block. It would be quite risky if he was just waiting for another block, he would have to have more than half of the hashpower to be sure that the block he found doesn't go to waste.
It is more profitable to publish a block, then to try to race the entire network, But it is pretty safe to keep it for few seconds. In the long run, I am not sure that this strategy is profitable, but it is maybe possible that sometimes it is.
I can tell you that if an attacker waited to find the second block before he publishes his fist one, he will have to throw away at least 100% - X of his blocks he finds, just to get two block rewards, because for each one he will have at most X chance of finding another block before the network. So if he throws away more then 2 blocks for every time he finds a second block on his secret one, he will be at a loss. That would mean that this has to happen at least one in three blocks, that he finds a second one. That would suggest he has at least 1/3 of the network hashrate. That is assuming he finds a block in a fist second, as with time his chances decrease. If he finds it in a 10th minute, he might as well publish it. Maybe... It is a risky business...
Also, if the attacker shares his withheld blocks with any non-attacker miners, then he is risking (and will most likely happen) the non-attacking miners broadcast the block to the rest of the network.
A selfish mining attack will always be unprofitable over the long run if he is a solo-miner or a collective pool (it would be unprofitable in terms of how much BTC block rewards the pool earns). There is a risk to a pool admin (especially a PPS pool admin/owner) that a troll miner with a large mining capacity mines on a pool, and withholds found blocks, depriving the pool of the revenue -- the troll miner would not gain anything from this, although he would cause harm to the pool.