The basic idea of what we're doing is having a ramp drive Specular Color and another ramp driving Eccentricity, and then a SamplerInfo node driving the the vcoord of the ramps. To put it in real world terms, the SamplerInfo node is making the surface shinier dependent on the angle of the camera (making it shiney on the edges but not in the middle). The reason we're using a ramp is so that you can control the dropoff and color. So... make a blinn shader with a ramp driving specular color and another driving eccentricity (it could be Phong if you want it, but this example is blinn so that's why i'm doing it this way).
The rmap on the left is for specular color. The color on the bottom is what is going to happen at the rim (I wanted the specular color to change from a dull grey to a light green). The map on the right is what I used to drive eccentricity. Again the color on the bottom is what will happen at the edge of the rim (I want the eccentricity to be stronger at the edge so I used white). You can adjust all these colors and get different effects.
The next thing we'll do is create a SamplerInfo node (create-->utility-->general-->samplerInfo). In the Hypershade drag the samplerInfo node onto one of the ramps (to open the Connection Editor) and link the facing ratio to the vcoord of the ramp. It's as simple as that.
Basicly you are driving the eccentricity and the specular of the shader to "blow out" on the edges of the object. If you then have spec maps you could pipe them into the ramp positions to further beautify the effect. The advantage of this is that you do NOT need any special scripts, or lights for your scenes. It will give you a rim light when you SHOULD be getting a rim light. The setup is extremely quick and simple and it could even be set up as a script or an API node if you know what you are doing. Anyway I hope that this better explains the process. If anyone has any further questions please let me know I would be happy to explain further...