One way you can do this is to use reflection to access the DataGrid internal row objects which are not publicly exposed. This solution was suggested by Matthew Benedict in a private communication.
Here are both VB and C# sample projects showing how you might do this. The sample provides a class that you can instantiate by passing a DataGrid, creating a rowHeights object. Once you create this object, you can use an indexer on the object to set and get the rowheights.