After you have printed your shirts, and the ink has dried, you need to heat set it. You need to follow the directions for the brand of ink you are using. I have been using Speedball water based fabric inks. Requirements for other water based fabric inks may vary.
Heat setting bonds the ink to the fabric by raising the heat of the ink above 250 degrees. Once the ink is properly heat set, it will not wash out during repeated washings. According to Speedball “If the optimum heat-setting is achieved, the graphics will endure as long as the fabric.”
This can be a very time consuming method if you are printing many shirts.
Place a piece of paper over the dried ink, and iron at a medium setting for 3-5 minutes. Turn shirt inside out, placing paper between inked image, and other side of shirt (to prevent possibility of hot ink being transferred to non-printed part of shirt). Iron for 3-5 minutes.
This method is from a Speedball FAQ page, and is the one I use nowadays.
Place the t-shirts on cookie sheets, making sure inked images are not touching anything including cookie sheet, other shirts, or same shirt. Set the oven at 400° F, and whenever that temperature is reached, turn off the oven. Quickly, insert the cookie sheets with the shirts, into the oven for ten minutes or until the oven cools.