It's not a jQuery problem.
This happens because the hover image has not been loaded yet when you move your mouse over the header, so the browser has to download it when needed, and it may take some time.
You have basically two options:
Preload your images, so that they will be loaded even if not immediately needed, and when you need them they are ready to be displayed.
Use a single image containing both the normal image and the hover image, this is called a sprite. This way the full image will be loaded and you won't face this problem anymore. You then need to change the background position to display the other image. You can do this by create a different class in your CSS rules, with the different background position coordinates. With JS you only need to assign this class when the mouse is over the header ti display it.
If you don't want to do it manually, there also online tools which can make the job for you. Usually the use of those tools is discouraged, but for two images of the same size I think they are ok.