Determining a value given the coordinates for numbers arranged in a triangular fashion
I don't see why you should return the answer as a string.  That makes your mathematical function weird.

You shouldn't use flag variables like not_finished = True; they are almost never necessary, and in this case not_finished is totally superfluous, since it is always True.  Actually, this loop would be better written as

for counter in itertools.count(1):
    x_cord = 0
    …


Your solution is brute force.  I would characterize it as \$O(\max(x^2, y^2))\$.  Of course, performance is going to be a problem with large coordinates.  The solution is not to use memoization, but to work out a formula for the answer.

First, note that the numbers along the bottom (\$\mathit{fn}(x, 1)\$) are recognizable as the triangular numbers, and even if you didn't recognize them, you could easily figure out the formula.  Then, you can count backwards along the \$\nwarrow\$ diagonal.

$$\begin{align}
\mathit{fn}(x, 1) =&amp;\ 1 + 2 + 3 + \ldots + x = \frac{x\ (x+1)}{2} \\
\mathit{fn}(x - 1, 2) =&amp;\ \mathit{fn}(x, 1) - 1 \\
\mathit{fn}(a - 2, 3) =&amp;\ \mathit{fn}(a, 1) - 2 \\
 \vdots&amp; \\
\mathit{fn}(a - (y-1), y) =&amp;\ \mathit{fn}(a, 1) - (y-1) \\
 \vdots&amp; \ \scriptstyle{a\ =\ x+y - 1} \\
\mathit{fn}(x, y) =&amp;\ \mathit{fn}(x + y - 1, 1) - (y - 1) = \frac{(x + y)(x + y - 1)}{2} - (y - 1)
\end{align}$$