I am going to start off with the disclaimer that I am not an expert, but I have made 2 session beers of between 3-4 percent, and basing my advice on that. I love my session beers, and try to keep at least one available at all times. If you come to NHC, I will have a Mocha Mild that will be on for either club night or the hospitality suite.
Ok, now that's out of the way, here is what I have learned about making tasty low-alcohol beer.
1. American 2-row sucks. It doesn't provide anything to a beer other than fermentable sugars. maybe a couple pounds if you need the enzymes, but really, get rid of regular American 2-row. Use Marris Otter, Golden Promise, or even Belgian Pale malt. Eek out every ounce of flavor you can get in these beers.
2. Character malts are awesome. Munich, Vienna, Biscuit, Aromatic. All of those are really nice to add to a beer. If you are doing a darker beer, look at pale chocolate, dark Munich, special B and the like. Crystal is nice, but I have noticed that the sweetness stands out a lot more in these small beers, I would recommend keeping it under a pound.
3. Mash Higher. I mash my session beers between 154-156, but I have heard of people doing mashes as high as 160-162. You want some unfermentables in there. You could also try no-sparge, I have tasted some really nice beers that no-sparge, and I find the malt flavor is appreciably better. I intend on trying this with my next session beer.
As you may have noticed, the biggest problem I have personally run into, and seen others run into is lack of complexity. The lower alcohol and generally less malt can make for a boring beer if you don't work at it. I make up for this with the above, character yeasts (I like 1968) and interesting hopping. I threw up a recipe in this folder for a Munich mild. That is the beer I have been drinking lately, and it will be the base recipe for the Mocha Mild I am bringing to NHC.