Temperature control for the home setup can be very difficult to control precisely. For high temperatures, heating your flask held within an oil bath is acceptable - never heat directly on a hot plate. One can achieve very accurate temperature regulation this way by adjusting the heater power.
For low temperatures, a cold bath may suffice, and NotNicolaou has provided a very nice answer in this regard, along with a very comprehensive table of components for reaching designated temperatures. However, the crux of your questions asks for a method that allows you to decrease and increase the reaction vessel temperature at will. Not easy. A cold bath is not likely to allow this, and so you need to engineer a solution based on how the 'real' labs do this.
A lot will depend on the scale of your reaction - micro vessels can be easily regulated with cooled gas flows. A regulated flow of evaporated liquid nitrogen is perfect for this, but not easy to implement. This is how most spectrometer temperature apparatus work, and is great for small vessels. If you are using a bigger reaction scale (anything in a round bottom flask for instance), as is most likely, then a liquid cooled bath is preferable.
To do this, you may need to consider having your cooling source external to your reaction bath, and applying a thermal regulation stage prior to passing it your reaction bath. Below is a rough schematic for this. Your cooling fluid is maintained at its lowest temperature (keep adding dry ice!). It is pumped through a heat exchange vector (such as a condenser) that has a high temperature medium (room temperature water, heated gas etc), and this heats your cooling medium to your desired temperature which is then passed into the reaction bath. This is ideally recycled back the source bath. The pump is typically a peristaltic pump design to prevent corrosion of the pump.
The critical element of the design is the heat exchanger, and some thought needs to be given to this. The simplest heat exchanger that the chemist uses is the condenser, although you might have to trial suitable diameters to manage heat exchange most effectively.
You can now regulate your reaction bath temperature up and down. You have two points from which to control the temperature of the final reaction bath: flow of cooling medium through the heat exchanger and the temperature and flow of the heat exchange medium. The slower the flow of your cooling medium through the heat exchanger, the greater the heat transfer. You can get very fine control of temperature using a setup of this nature, and it is essentially the same design of many temperature controllers.