Hi Codere and welcome!
There are lots of examples on InfoPathDev showing how to do filtered cascading lists. Greg Collins has a sample in the downloads area from many years that shows this technique too.
The challenge with browser forms is that 2007 doesn't support some of the filtering options (for example, preceding-sibling function) so you have to use rules and FilterOwssvr to trigger it - like you are doing based on that article.
So, why isn't this working for you when you reopen the form. Well, that's because it isn't running the query on reopen. This is easy to fix. Just add a FormLoad rule to your form that sets the filter for the State and queries that FilterOwssvr XML data connection.
That should be all you need.
Good luck!