Usually speaking what you do in these situations is reduce the number of lights affecting things.
The way to do this is to create each pass function as it's own .fx
So what you'd have would be
Normal.fx
CubeLight.fx
Shadow.fx
And then you'd have the user set the options for thier card (or presets for each card) and construct the main .fx that is actually attached to the object at runtime.
In this fashion you can pass all the light sources in to the Shader itself, but the Shader would then have been constructed to only take advantage of say 1 for all of the effects.. the rest would just be simple combined vertex or pixel lighting.
while it doesn't convey realistic multi-light sources, it does make the shader playable but scaleable.
There aren't many options of this because most games hide advanced controls, but for Tomb Raider - The Angel of Darkness, it was always felt that allowing the end users to completely alter thier settings to thier own comfort was best.
So it allows them to edit the number of Lights, Effects, Reflections, Clip Planes, etc. that are used as the shader is compiled at runtime. Using Cg was a benefit to this though give it's nature and ability to be constructed inline.
Your signature has been erased by a mod. Please resize it to under 600x120. Thanks!