I don't see how either OSPF or BGP would help you here.
OSPF is an IGP - it's used inside of an AS. An ISP building an OSPF adjacency with you is pretty much unheard of. You could use BGP, I guess - but the main purposes of BGP are a little different from what you're trying to do. You're using routing marks, so you're making manual decisions with IP policy routing. BGP makes routing decisions based on paths to the destination. You could theoretically have BGP peering sessions on all three links, and use weights to make certain paths more preferable. Once a link goes down the peer goes down, and the other route kicks in. I don't really think that's worth pursuing.
I think your best bet is to just find targets to monitor behind each link - either their immediate gateway, or something further into that link.
If you're monitoring the gateway all you need to do is set the gateway-check parameter of each route to 'ping'. The route will withdraw if the gateway stops pinging. Set the distance to the backup satellite link higher than the primary of ISP 1. Then if the primary route is withdrawn the higher distance route kicks in, this is often called a floating static (it's a static route that exists but isn't active until a different route covering the same destination is withdrawn).
If you want to monitor something behind the gateway you'd build a specific /32 route to that destination, and then build a NetWatch item that watches that destination and uses up/down scripts to disable/enable the relevant default routes.
Here's a roughly related post:
http://forum.mikrotik.com/viewtopic.php?f=14&t=54881