Voici un plugin jquery complet qui résout ce problème:
https://github.com/bigspotteddog/ScrollToFixed
La description de ce plugin est la suivante:
Ce plugin est utilisé pour fixer des éléments en haut de la page, si l'élément aurait défilé hors de la vue, verticalement; cependant, il permet à l'élément de continuer à se déplacer vers la gauche ou la droite avec le défilement horizontal.
Étant donné une option marginTop, l'élément arrêtera de se déplacer verticalement vers le haut une fois que le défilement vertical aura atteint la position cible; mais, l'élément se déplacera toujours horizontalement lorsque la page défilera vers la gauche ou la droite. Une fois que la page a fait défiler vers le bas au-delà de la position cible, l'élément sera restauré à sa position d'origine sur la page.
Ce plugin a été testé dans Firefox 3/4, Google Chrome 10/11, Safari 5 et Internet Explorer 8/9.
Utilisation pour votre cas particulier:
<script src="scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="scripts/jquery-scrolltofixed-min.js" type="text/javascript"></script>
$(document).ready(function() {
$('#mydiv').scrollToFixed({ marginTop: 250 });
});