I'm a big believer in contrasts in meal planning.
For example, one thing I like to consider is the basic flavor profile of the main dish and the side dishes. For example, if you've got a particularly rich tasting main course, you could complement it with a slightly bitter side dish such as Brussels sprouts or broccoli raab. A sweeter vegetable would be a nice contrast to a more sour main dish.
Textural differences are also valuable. A stew or soup (which is generally all mushy stuff) works great with a crunchy side dish such as a nice crusty bread.
Think also about how the plate will work. If you've got a main dish with a gravy, you don't want anything on that plate that will not work with the gravy. Thus if you also want salad, give a side plate or serve it as a separate course.
The visuals of the plate are also a consideration. If you've got chicken in a cream sauce, mashed potatoes, and cauliflower, they're all close enough in color to make for an unappetizing meal. Color differences make things more appetizing -- that's why bright green parsley and bright yellow lemons are often used as garnishes. That's also why some dishes are visually appealing right away. (Arroz con Pollo generally has yellow rice, red pimientos, and green peas. Stir frys often try to include something red or yellow to contrast with the green of many of the veggies.)
Having said all this, what I'd recommend is taking the side dishes you like and start sorting them into categories. For example, starches can be divided into mushy, chewy and full of texture, and crispy. (Potatoes can be mushy or crispy depending on the preparation.) Then as you're planning your main course, think about how to contrast it in a pleasant way.