A good cornstarch substitute is all-purpose flour or arrowroot. Flour is the most common substitution, but it is not an exact one. It requires more flour to accomplish the same thickening that cornstarch is capable of, so if a recipe requires one tablespoon of cornstarch, then 3 tablespoons of flour should be used to achieve the same results.
If using flour as a replacement for cornstarch, the sauce or recipe may also have to cook longer in order to thicken. Using flour in place of cornstarch will never result in the same physical appearance of a recipe because cornstarch gives liquid a glossy appearance that flour cannot match. To avoid sauces or gravy becoming overly thin, a cook can mix two parts cold water to one part all-purpose flour together before adding it to a recipe.
Arrowroot does give a glossy appearance in recipes. The downside of arrowroot is that it is not likely to be on hand in a pinch, and it still requires a longer cooking time in order to receive the same thickening result.
Other acceptable substitutions for cornstarch include tapioca and rice or potato starch. Tapioca is a good substitute if the recipe requires chilling after cooking. Rice or potato starch are good substitutes if the recipe is to be frozen after cooking.