There is no easy answer here. I run a campaign that meets about once every 2 months for a 6 hour session. It has been going on since 2001. When I envisioned the game, I was going to run it as a once a week, 3 hour campaign. Accordingly, there is a *lot* of detail that I originally expected PCs to rememeber between sessions. The players forgot them a long time ago ...
As such, I have had to answer this question myself. I find the best solution: Remind the players of previous facts often - both out and in of game.
Out of game: When I know that the evil wizard that the PCs faced two years ago (real time) is about to make a return appearance, I often work the details of the adventure where he was previously featured into a conversation with my players ... something along the lines of, "Hey, do you guys rememeber that spell that Zthulus cast on you in the Crystal Vein Mines? The one that killed the NPC wizard ... Do you remember what it was? Was ti a lightning bolt, or fireball? Oh .. a cone of cold ... Thanks." I like to pick things that will make the players argue or discuss the situation a bit, resulting in more sparks to the memory. Then, when he pops up in the next session, the PCs have some recollection of him without me having to go into a diatribe during the session.
In game: I *love* foreshadowing. When I know that some NPC is returning to action, or some previosuly discovered fact is going to suddenly become relevant, I work it back into the game prior to its reappearance. For instance, one group of PCs were hunting an escaped criminal during a low level adventure, but the criminal got away. Sometime later, I decided to bring him back as a freedom fighter in a neighboring kingdom. Right befoer the PCs began their travel to that neighboring kingdom, the PCs ran into the ex-head guardsman that had been fired when the prisoner escaped and the PCs could not catch him. The ex-guardsman threw a fit and berated the PCs for ruining his life by letting that pompous Micol Degrus escape their clutches ... so when the PCs discovered a set of orders written in pompous language and signed MD, they were able to put together the pieces.
However, regardless of how much work you put in to jog memories, some details get lost. When that happens, I usually roll a few dice and tell the high intelligence PCs that they suddenly rememebered the necessary details, with extra useful information tossed in if the rolls were good.