The idea with the light beam could work, however I see a potential problem. If the sand is fine and/or dry, it will produce lots of fine dust when its moved, like, when you refill the silo. If this dust settles on your light source, you would get low intensity at the detector, even if the silo is empty.
At industry scale, it is often done with a radioactive source, Americium i think, but I think for private applications that's hardly feasible.
I would also suggest the ultrasonic sensor.
Edit: Maybe it would be possible to build some kind of shielding for the light source and detector, which opens only briefly for measurements, and then closes again, like a camera shutter. Maybe one can even salvage one of those.