There are a few ways to do this. I have completed this in the past with great results using a combination of attributes and raster processing. The premise of the process is to assign each feature with a value of n (1, 2, 4, 8, 16, 32, 64, etc.). Assigning these values ensures that when you subtract layer one (1985) from layer 2 (1997) you get a unique value, which identifies what it changed to. For example, if 1 = buildings, 2 = parks, 4 = seal/unsealed and 8 = water; by subtracting the values, there is no way to get the same value. When you add this column of values you are going to want to convert the polygons to a raster, using either ArcGIS or QGIS. I would recommend that you set the raster pixel size to a small value (ie: if the data was collected from Quickbird imagery, then set it to the pixel size of the Quickbird imagery). Using Raster Calculator (in ArcGIS or QGIS) subtract Layer2 from Layer1. This will result in Layer3, the changed to layer. You can convert this data back to a polygon layer for further GIS analysis. If you want further information, or specifics, I can share a more with you.
While I think that Ryan’s Answer is the most reasonable course of action, you could use the Intersect Geoprocessing Tool using both your featureclasses as input.
The output that you get, will contain attributes from both inputs. You could check for features having different values in the two ‘type’ fields.
There are a few limitations to this process:
Firstly the Intersect Tool like all overly tools can only operate on a limited amount of vertices. If you have too many vertices in your data, you would have to tile your data and run the process in stages.
You will find many sliver polygons in the output.
This requires that your feature classes entirely cover your area of Interest, and that there are no Gaps.