решал подобную проблему:
делал галерею на сайте подобную той что есть вконтакте. то есть кликаешь по превью, открывается картинка на весь экран в отдельном слое, который позиционируется по-центру. проблема была в том, что если картинка невысокая, то скролла нет, а если высокая то скролл есть. когда листаешь галерею, то скролл то появляется то исчезает.
решение довольно простое: сначала надо узнать ширину скрола, потом отнять эту ширину у отступов которые позиционируют нужный элемент. ширина скрола в разных ОС и браузерах может быть разной, но есть один универсальный способ как узнать эту ширину программно. создаешь пустой div прозрачный невидимый пользователю, ставишь overflow-y: scroll; и смотришь его ширину после инициализации документа. точный код пока привести не могу, но если интересно могу порыться в своем проекте и выложить сюда.