Playing around with dynamic lights:
<img src="http://screenshooter.net/data/uploads/ct/dj/vugj.jpg" border="0" />
Method that one of forum members already used. Each light source spawns many sprites that look like flashlight beams. They are rotated at given angle and pinned to light source. Ray becomes invisible when it collides with an obstacle.
How it is generated:
<img src="http://screenshooter.net/data/uploads/ni/oe/nwss.jpg" border="0" />
example of light with 8 rays and 4 steps. Number of casted rays and light steps can be changed. Different colours are achieved by using different images as frames, because using tint causes framerate drop.
I don't think that it can be used in game, as it extremely inefficient. using higher numbers for rays and steps causes better results, but it causes spawning tens thousands of sprites. On i7 machine with 4GB ram using only few sources on screen and about 40 in level, with 40 rays and 5 steps (200 sprites) per light is possible maximum, I think.
I tried not to use steps, but change ray sprite height when it collides with obstacle. It alows to reduce number of spawned objects, but causes strange results (sprite height is set to distnce between light source and obstacle, and in acts strange when light ray collides with many obstacles; it also looks worse)
I thought of using single sprite per light and masking it with shasow object casted by obstacles, but I can't imagine how could multiple light sources interfere then. I think that last method could be some solution and maybe someone smarter can figure it out.