Invoking only the last registered event handler
Yes, this is a reasonable way to implement the event. Another would be use the normal even implementation (without explicit add and remove) and get the last subscriber using GetInvocationList().

But I think the fundamental problem here is that what you want doesn't really behave like an event, so it probably shouldn't be an event.

What I would probably do is to make the abstraction something like “a collection of open Dialogs”, not “a collection of delegates that are going to be invoked when the back button is pressed”.

That way, you can easily access the top-most open Dialog and invoke its HandleBackPressed() method. But you could also use it for other purposes. So this would make your code more flexible, without adding much complexity.