You need a messenger bag with a sternum strap (or whatever it's called). Wearing it higher and packing it with something malleable between the laptop and the back of the bag helps too. You want the bag to be able to conform to the shape of your back. If you pack it so the laptop is right up against your back, there'll be only a small contact point against your back which won't be as comfortable and more likely to slide.
Since I change at work I'm bring my clothes along. I usually fold my pants and put them between my laptop sleeve and the back of the bag.