Banning a flag, much like bans on almost everything else known to man, is like putting a band-aid on a gunshot wound.
The flag is a symptom, not the disease. For most people it is an historic artifact of times past when Americans chose sides on political and social issues that included (but not exclusively) slavery. Racists fought under the colors of both the Confederate and Union flags. The KKK has active chapters on both sides of the Mason-Dixon line.
Racism is a disease that afflicts almost everyone in a society comprised of mixed races. How people act on it is dependent on a myriad of social/economic factors. And, in many "developed" societies these issues are addressed and resolved without resorting to violence as what we see in America.
Just as president Obama clearly noted in a recent interview;
"Racism, we are not cured of it," the president said. "And it's not just a matter of it not being polite to say nigger in public."
Lowering/removing a flag over a state house, or banning it's sale in Walmart is not addressing the issue facing us. And, in fact, these fool-hardy measures (just like prohibition of alcohol) tend to only throw more gas on fire that burns in the hearts of those whose hatred of those different than them drives them to act out violently.
The root cause is ignorance and the more educated (informed) people become the less they tend to resort to violence; as is borne out in looking at other developed countries.
Hiding the flag, not using the "N" word, and pretending that racism doesn't exist because of it promotes ignorance at worst, and is childish at best.
People can start by educating themselves on just what this flag is all about; here's at least 8 things you should know about the Confederate flag.