One good technique for having streak free windows is to avoid washing them on a sunny day. Washing windows in direct sunlight causes streaks, so it's best to clean on a day that's overcast. It is also advisable to avoid washing windows on a windy day.
Another way to avoid streaks is to use a simple window-washing solution of water and vinegar. A good formula is a one to one ratio of hot water and vinegar. Other people use a drop or two of dishwashing liquid in a gallon of warm water.
Another method to avoid streaking is to use a squeegee or a strip applicator with a cloth head. First, make the window wet with a sponge that's been dipped in the vinegar and water solution, but don't flood the glass. Make the edge of the squeegee wet to make sure that it has good traction on the glass.
As the squeegee moves around, dry its cleaning edge regularly with a clean, lint-free cloth. This keeps it from simply moving dirty water around the window glass. Dry any remaining water on the glass with a chamois. Wipe window frames with a clean, damp cloth, and dry them with another clean cloth.