I read a great piece of advice a few months ago, and I've been trying to use it ever since:
When assigning a task (chore, errand, etc.), give it to the youngest child capable of doing it.
I have found with this that my 6, 3, and 2 year old boys have been doing a lot more. They are still excited to be big, to participate, to have something to do. And it cuts down on resentment a lot, because the older kids see that I am trying to spare them extra chores when I can. This, in turn, makes them much more cheerful about helping out.
The other thing I do is with children as early as age 1, as soon as they are mobile and know where the garbage is. Whenever they bring me something to open (a piece of gum, a string cheese, a yogurt), I hold the opened item and hand them the wrapper. "Go throw that out and I'll give this to you as soon as you come back." This habituates them to throwing out their own garbage. I cannot communicate how utterly wonderful it is to not be used as a human trashcan, which for some reason children unconsciously presume their parents to be. This leads to the point where when I open something, I don't even have to say anything. They wait for the wrapper to throw it out. And when they are older, and bring me milk to pour, or whipped cream to spray, I hand it back to them when they are done and they put it back in the refrigerator. And if they ever bring me garbage, I just point to the nearest garbage and off they go. (A few years ago, I did add 2 more garbages with kitchen garbage bags in them all around the main floor in order to make it simpler for the little ones.)