I'm pretty sure one of the main reasons it is not legal is that it is a bitch to test for in real time.
With alcohol, we have solid, non-invasive, testing mechanism to tell if people are drunk in real time (breathalyzer). I'm pretty sure there isn't a similar system in existence for weed which makes it a sticky subject for legalization. How do we know if people are high when they are driving, or if a cop is high on the job, etc?
Sure we can take a piss test or hair test and deduce that they have been high within the last month (traces of THC can last in the body for almost a month), but what fucking good is that?