You need to become familiar with your data. If you're in a situation where the data could truly be anything at anytime, you're in a bad spot. Frankly, I rather doubt you are in that situation. At least, I'm extremely hopeful you are not.
If it is exceptional for the data in the column to not be a date, then pull it out as a date. Don't pull it out and hope it nicely formats to one, pull it out as one!
DateTime myDate = (DateTime)datarow["MyColumn"]; // C#
Dim myDate As DateTime = CType(datarow("MyColumn"), DateTime) 'VB
Even if you find your data to be stringly typed, immediately parse it. Set the expectation that the value is a date in your code. When it isn't, it will create an exception.
Edit: Chris mentions a good alternate suggestion in the comments. You can also write
DateTime myDate = datarow.Field<DateTime>("MyColumn");
The benefit here is what if the column allowed nulls?
DateTime? myDate = (DateTime?)datarow["MyColumn"]; // C#
Dim myDate = CType(datarow("MyColumn"), DateTime?) 'VB
Here, you may get "Specified Cast Not Valid" if row holds DBNull.
DateTime? myDate = datarow.Field<DateTime?>("MyColumn"); // C#
Dim myDate = datarow.Field(of DateTime?)("MyColumn") 'VB
This alternate handles DBNull appropriately.