First pick out the colors and the sequence of those colors. Make sure you have enough fabric for each area. Obviously, the bottom (which will be a lot wider) will need more fabric than the top.
I started with a dress that already fit my daughter, but.. it was too short. She's tall and thin so she grows out of the length much faster than the width. You could use a T-shirt for the top I'm sure too, but I wanted to pick something with a little more detail and I liked the elastic smocking-esk look and ruffled sleeves on this one. Plus, the top fit her and she thought it was comfortable. Doing a neck-line and sleeves is the hardest part of starting something from scratch. So, SKIP IT! That's what I say. Clothes are too cheap to spend that much time getting the sleeves and all those details right when you can recycle clothes that they have outgrown or don't wear anymore. I liked picking a top with a little stretch to it, but be careful not to pick something that is TOO stretching or loose because the weight of the skirt part will weigh it down.
For the orange part of the rainbow I decided to use the ruffle from the bottom of this old dress of hers. Make sure when you cut off ruffles or other parts of dresses and clothes that you leave enough seam allowance. I will even leave up to an inch just to be safe.
Here is what it looked like on the floor ready to be sewn together. Each layer is getting wider (the strips are both doubled over) ...
Note: I cut the strips out free-hand -- this is not a project for perfectionists. The strips aren't all the same width either. One way that I cut it evenly "free-hand" is by cutting a little bit and then folding the cut part over the next part that I need to cut (like the picture shows) and I use that as a guide to finish cutting the strip. (You could use a ruler, but I'm too lazy for that when I'm just doing a "whatever" sort of thing like this.)
Each layer is a bit wider because I gather just a little bit as I sew the pieces together.
In the picture above you can see how I'd already sewn the orange ruffle to the red (right-sides together) and then am sewing the next yellow strip right over those two. As I add each new strip I make little tucks and gathers every few inches or so to make the dress get fuller as it gets longer. A little gathering goes a LONG way so be careful how many tucks you add.
Usually after I add a new strip I'll top stitch it down right away. You could wait till the end to do all the top stitching but I liked to finish each one as I went. Turn the seam allowance underneath so that it's pointing up the dress (away from the new strip with the gathers)
The picture above is the underside of what I was doing. I top stitch it like this so that the seam is re-enforced and so that it will keep the raw edge of the fabric from unraveling as badly (because the top-stitching is close enough to the seam to hold the seam allowance in place.) If you had a serger or if you'd rather zig-zag each raw edge you could do that instead. I was going for the quickest way to do this though and so just did the top stitching after sewing each seam. I thought that looked nicer and flatter with the least amount of effort (no ironing and so on needed.)
And.. it looks like the picture above. I used all cream colored thread for all of this.
Here is an example of how I gathered as I went. This particular light green I didn't do the "right sides together" because I wanted a little ruffle on the outside of the dress (the edge of the green was already finished since it came from another dress.)
Now it looks like this!
The final strip that I added was a pink. My daughter was very particular about the colors to her rainbow dress and it took some doing to convince her that I needed two strips of color for each part of the rainbow. She at first only wanted all of the "light" colors. No dark green and so on, but I needed it to make it full enough and long enough for her. In the end it turned out quite just right and she loves it.I repeated the strips and also top stitched a row of lace on as well. You could sew on rick-rack or ribbons or really anything onto the dress depending on what you have. If you happen to like sewing buttons and had a lot of them you could add that to the dress as well (not where the child would sit on them of course.)
I did the same type of dress the day before this one for my 3 year old. The pink top of hers was from some old clothes that she had already. Her "rainbow dress" is more in the pastel shades just to be fun and different.
Note: The strips of fabric are NOT all one piece all the way around. Each strip is cut thin enough so that I could sew the pieces together to make it wide enough to go all the way around the skirt with extra for gathering. Try to position the vertical seams in the color strips so that they aren't all in a line with one another. Just make it random and preferably more vertical seams in the back than in the front.
This took about a day to do completely (while still making meals and doing other household things and taking care of the kids of course) which is long enough for me to want to make it fit them as long as possible. Right, so here is my plan... When they out grow the top I simply have to cut it off and sew on the top from something else that they have. If it gets too short? Just add another strip to the bottom!
Okay, so now it's your turn! You can buy new fabric if you want (Make sure it's a kind that you can wash in a machine and be sure to pre-wash and dry it before you sew it all together if you buy new fabrics.) Better yet though... look at what you and they already have! What are you NOT wearing and how can you make it into something better? What are they tired of? Can you use part of it for this dress perhaps? Also, thrift stores can be great places to buy clothing simply to use the fabric. In a dress or skirt for instance that wouldn't fit you, yet is only $5, can be a cheaper way to "buy fabric" for a project like this. Plus, it's a great way to recycle something that might other-wise be thrown away, and it can save time as well because if you use pieces from clothes you often don't have to take the time to finish edges or add ruffles because someone else did that for you!
Have fun!