You shouldn’t put any logic in a lambda. Just create a normal function that has any logic you want, and call it from the button. It’s really no more complicated that that.
class SomePage(...):
    def __init__(...):
        ...
        button1 = tk.Button(self, text="Back to Home", 
                        command=lambda: self.maybe_switch_page(StartPage))
        ...
    def maybe_switch_page(self, destination_page):
        if ...:
            self.controller.show_frame(destination_page)
        else:
            ...
If you want a more general purpose solution, move the logic to show_frame, and have it call a method on the current page to verify that it is OK to switch. 
For example:
    class Controller(...):
        ...
        def show_frame(self, destination):
            if self.current_page is None or self.current_page.ok_to_switch():
                # switch the page
            else:
                # don't switch the page
Then, it’s just a matter of implementing ok_to_switch in every page class. 
5
solved Function to switch between two frames in tkinter