The building blocks you are essentially asking about are:
-make a global variable, lets call it "gameprogress", in a fsm that sets up everything, set this global to "0"(just in case it isn't 0 at startup)
-when you walk into the house, set up a trigger to check what progress is, if 0, maker it 1, if 1, make it two
-in the fsm that sets up your garden, have it look at gameprogress. if 0, load the dirt. if 1, load the sprouts. if 2, load full crops.
now walk in and out of the building, look at your crops. walk in and out again, they should be fully grown.
when it gets tested successfully, move it from global to a fsm int inside your garden fsm, and when you walk in the house(or whatever its set to), int add 1 to the fsm int. (but then again, that might not work, the garden may not be active when you are inside the house. you might need a gardenmanager object that stays active all the time? or just keep the global)