When TextBox lost it's focus, then Binding is going to update data source. So check the source before the update, and you can get the previous value.
Example:
void TextBox_OnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs args) {
var textbox = sender as TextBox;
var bx = textbox.GetBindingExpression(TextBox.TextProperty);
var item = bx.ResolvedSource as MyDataItem; // source object
var path = bx.ResolvedSourcePropertyName; // source property
var previousValue = item.MyProperty;
bool dirty = bx.IsDirty; // if true, update fires
}
Note: If user input the same value as the previous, it will also be marked as "dirty".