I have a rug that is about 15x20 feet. My problem is that every three weeks or so I need to take everything that is on top of it (coffee table, couch legs, entertainment center etc) off and straighten it out because it either gets tilted in such a way that it doesn't line up with the walls any longer or bunches up in the middle at certain spots.

Does anyone know of a way to keep it from moving around? Is there something I could use to attach it to the carpet below (without damaging the carpet)?

When you place an area rug on top of a carpet, you're fighting the grain of the bottom carpet. Pads may help, but I've only seen them used to avoid sliding on hardwood. The same thing happens with chair mats.
–
BMitch♦May 16 '12 at 12:15

I have used a carpet liner or pad to keep a rug from sliding. There are many types, but I recommend natural fiber that is colored the same color as your carpet underneath.

Some fiber options include felt, horsehair, and jute. Felt is a personal favorite. Rubber and foam are the other options, but in my experience they bind and bunch and you can feel it underneath the rug.
When using a carpet pad, it is imperative that you pay extra attention to liquid spills as the pad will compound any moisture issues, ie... it will expedite rotting if not taken care of, but this is true with any liner you use.