Mosquito Bits have not worked well for me.
I have had a bit of success with using cinnamon oil (highly diluted) but it wasn't practical in my situation.
The advice Baja_Costero gives in post 3 in this thread is the same as what I would give today:
Ideally the top layer of soil should dry out every time in between watering. Reducing watering is probably the best preventative measure you can take with any serious gnat problem.
I have also used sand top-dressings, but even then I make it a point to let things dry out between waterings.
Predatorial mites and nematodes are also helpful preventative measures, but cannot be relied upon to eliminate or control Sciarid (Fungus Gnats) outbreaks.
Sciarids are a huge issue with cacti as that the gnats will eat the roots and then the flesh of the cacti, killing them outright. Once the larvae is inside a cactus seedling, sprays and top-dressings do not reach it and all the moisture the little maggots need is in the cactus flesh.
Luckily with many other plants the gnats don't actually eat the seedlings.