In doing my research on index shadow mapping (the article Nicolas mentioned above), I really did find that it wasnt the best solutions most of the time. You cant use per-polygon indices or else you tend to get a lot of shadowing errors at each polygon boundary. If you use per object indices (the technique I believe IShadowMap uses), you fix this problem but you lose the ability for an object to cast shadow on itself.
I really think depth shadows are a better choice. The problem with depth shadows is that you typically have to read from the depth buffer, which is likely problematic on many cards (dont know personally, havent tried it on anything but a GeForce). In my second lighting and shadowing article, I demonstrated an alternative that uses register combiners. However, if you need a technique that doesnt read the depth buffer and doesnt require register combiners (something more universally supported), try toying around with texgen. If I recall correctly, the depth map sample on nVidia’s site uses the depth buffer to build the depth map, but in the second step (projecting the shadow map onto the scene) it uses texgen to calculate the reference value to compare to the depth map. Seems to me it would be possible to use the texgen when building the depth map also. That might be a bit more usable.
Also, I think the IShadowMap demo requires an alpha buffer to work (dont know for sure, havent had a change to sort through the source). As far as I know, alpha buffers arent such a universally supported feature. Last time I actually checked, only nVidia supported this. Maybe thats changed, but its something to be aware of.