Put both types in the same file and change the definitions to the following:
type ShopResult(someContext: ShoppingContext) =
//some logic
member this.GoTo shopName = new ToDoResult(someContext)
and ToDoResult(someContext: ShoppingContext) =
//some logic
member this.Buy what = new ShopResult(someContext)
For more information, see the section 'Mutually Recursive Types' in the language reference on MSDN.