まずこんな感じでターゲットを設定して、経路探索完了まで待ちます。

agent.SetDistination(target.transform.position);
while(agent.pathPending){
    yield return null;
}

この後、当初は agent.remainingDistance を参照していたんですが、これが使いものにならない。ちょっと複雑な経路になるとすぐ距離不明でInfinityになってしまいます。なので自力で算出する方法を採りました。

NavMeshPath path = agent.path; //経路パス(曲がり角座標のVector3配列)を取得
float dist = 0f;
Vector3 corner = transform.position; //自分の現在位置
//曲がり角間の距離を累積していく
for (int i = 0; i < path.corners.Length; i++){
    Vector3 corner2 = path.corners[i];
    dist += Vector3.Distance(corner, corner2);
    corner = corner2;
}

dist に現在位置から目的地までの経路上の距離が入ります。
経路の途中まで進んでから算出した場合も、path.corners配列には未踏破の曲がり角しか入らないので、問題ないようです。