You shouldn't mix asynchronous waiting (await) with synchronous waiting (Result). For one, it defeats the purpose on async, because it blocks a thread (in your case, it's the UI thread, you should never block that).
But more importantly, doing that can also lead to deadlocks, as you observed. That's because the continuation of your GetImageAsync() method attempts to run on the UI thread, but the UI thread is blocked by your call to Result. So, the two pieces of code
are waiting on each other and neither of them can continue.
What you should do is to make your event handler method also async: