Как вы и писали, сначала скрываете body до полной загрузки или до выполнения основных задач, а потом плавно показываете body (jQuery - $.show('slow')
, можно и на чисто JS).
Либо изначально задаете размеры блокам , чтоб при заполнении они не прыгали .
Либо блок, в который только что вставили контент, показываете плавно, чтоб страница не прыгала