Personally I use the same thing I've used ever since I was a kid; a little "cabinet" full of plastic drawers. You see them at any hardware store for holding nails and screws and nuts and bolts. Cheap and works pretty well, although if the cabinet tips you're in for a bit of a job.
I organize them numerically; Starting with the smallest capacitors (1-50pf, 51-500pf, 501-999pf, etc.) in whatever "jump" works. e.g. I only seem to use 4.7pf, 22pf, 47pf and 100pf caps in that range, so they all go in one bin. I have 0402, 0805, 1206 and through-hole caps in the same drawer, unless the TH parts are big. It's really not that big a chore to pull out a drawer and look for the right package.
For "common" values (0.01uF, 0.1uF, 10uF, etc.) they each get a drawer all to themselves, usually with the through-hole variety in their own drawer. I find I buy 500 of the one kind of cap, and just the SMT size takes up most of the drawer.
I do the same with resistors and inductors.
For semiconductor devices, I have all the small-signal diodes in one drawer, all the zeners in another, all the rectifiers in another (again, with TH in their own drawer becuase they're big)... I have a drawer each for red, green, yellow and blue LEDs, and my NPN and PNP transitors get separate drawers too.
Solder and angel-hair wire (I actually use "bare" (bus) 30AWG wire and 26 or 28AWG nylon tubing) go on threaded rods which sit in a holder made out of angle-iron. THis lets the spools turn and keeps the spools out of the way.
I think I'll end up putting all the through-hole devices in a separate cabinet of drawers. ICs I tend to keep in a box, although the smaller and more common devices will end up in drawers as well.
Generally I keep the SMT components IN the plastic DigiKey or Mouser sleeves (the ones with the DigiKey labels on them.) Helps me with two problems: losing small parts and re-ordering. Also, if a drawer spills, it's easy to clean up, and it's impossible to mistakenly file the part in the wrong drawer. (I also take out one drawer at a time when I'm building boards, which helps avoid mixups.)