Disappointingly I learned that hiding/showing an element wouldn't work because of the same basic issue — styles, whether inline or in a stylesheet, wouldn't cause Safari to repaint.
But with big thanks to the hit new game show Will it reflow? I found a solution. I hope it helps someone else.
var ss = document.styleSheets;
ss.addRule('.xxxxxx', 'position: relative');
ss.removeRule(ss.rules.length - 1);
I haven't fully tested this cross browser yet, but here's the jist of it: I'm collecting an already existing stylesheet and adding a new rule to it that doesn't actually apply to any elements, but the addition of this rule will cause browsers to redraw/repaint the entire page (twice — once when you add the rule, once when you take it away). This could quickly become a source of slowdown though, so I'm leaving it up to you to optimize the code for what you need. However, it works.
Edit: A couple other points — Chrome was affected as well, and addRule doesn't work in Firefox so I wrapped it in a try/catch block. Otherwise the code is safe for IE6 as well (bless his soul).