I think those 'best before' dates are a big culprit.  Its not 'best before' 'bad after'.  I've seen people throw out chocolate because its past its best before.  Its a huge incentive for the manufacturers to put a really short 'best before' date - throw everything out after two days and buy more!  And where do they get those dates from anyway?