There are two general things I think about anytime I am confronted with a new training scenario, especially when we're talking about changing bad behaviors.
1) I want to prevent the dog from ever having a chance to rehearse the behavior again, ever. From now on, your dog is never going to get the opportunity to be up on the bed. This means he never gets to be alone in the bedroom with access to the bed. He should be crated or left in another room. If you continue to leave him loose in the bedroom when you're not around (hoping that you've done enough training that now he finally "gets it" or something else) and he decides to jump up on the bed, he's just rewarded himself for making that decision. He's learned that the consequence of jumping up on the bed is a warm, comfy spot to sleep. If you come out of the bathroom, find him on the bed, and scold him, he's actually not making the association that he has done anything wrong. If you use corrections, the proper time to use them would be AS he is jumping onto the bed, not after he has jumped on to the bed, laid down, and had a short nap. If you correct him after he's done the behavior, he isn't sure what he is getting corrected for. Maybe he wagged his tail at you when he saw you, but you correct him for being on the bed -- he thinks you're correcting him for wagging his tail. It's a possible association that could happen.
2) How can I make doing what I want the dog to do way more rewarding to the dog than doing what the dog wants to do? This is probably the only way you will ever get your dog to be loose in the room without jumping onto the bed. Because you can't correct the dog for jumping up when you're not in the room, corrections won't work in this scenario (and all he needs is one jump onto the bed that didn't get corrected to reinforce the behavior and make it much, much harder to get rid of). Instead, give your dog a nice, warm doggy bed. If he likes to sleep in his crate, maybe put it in there. Cover the crate with a blanket or cloth to make it a dark, cozy space. Then, with you in the room (and continuing to prevent your dog from jumping onto the bed), reward your dog for choosing to go into the crate on his own. Then reward him for staying in it. Build up the stay to about 10-15 seconds. Then try out of sight stays. Walk out the door, walk back, reward the dog for staying in the crate. Then do it from the bathroom. With each success, increase duration until you eventually get to the length where you want to be.
Personally, I'm not sure that training this behavior is worth that much work. It might be to you, though.
One thing I would caution you against is the "he knows the behavior, he's choosing to disobey me" line of thinking. The slightest change in environment can mess up a behavior for a dog. Your presence is a HUGE change in environment! It's like the two dogs who live together, and when they're both in the same room, one dog won't touch the other dog's couch spot... but as soon as that dog has left, the couch spot becomes fair game. Your dog hasn't learned "I am not allowed on the bed", he has learned "when owner is present, attempts at jumping onto the bed are corrected".
Another thing you could try is figuring out how long your dog is good for alone until he jumps on the bed. It could be useful to know if he's jumping on the bed as soon as you are out of sight or after several minutes. You could try going into the bathroom, running the water, and coming out after 30 seconds, then a minute, etc. If nothing else, this will teach him that you don't have a predictable length of time that you'll be in there.
Is there a reason you don't crate him when you shower?