"Out of the box" for 10.1 you could try the following:
Simply have a separate list for each of the sub-components. It can still get a bit painful but you at least don't need custom functions or custom controls.
So on the first screen you have the attribute collecting the state using the list of states (provided via xml).
On the second screen you have the attribute collecting county - but repeated 50 times - and then use visibility to show/hide the one you want (which then has the correct xml for that state's counties).
On the third screen you have your attribute for town (again the same attribute for each list) but this is where it gets a bit nasty at 50 times counties in a state.
In terms of writing the required visibility rules you can probably leverage Excel to do a lot of the rule building for you from the lists (remembering that the compiler takes what you as the user see in Excel, not the function that Excel sees) - so there is not a lot of extra work from the rules perspective.
The biggest pain point will simply be putting all those attributes and linking up the right visibility attribute to the right control (and right xml).
Proceed with (extreme!) caution but... if you're already automating creating the XML lists from Excel then you could consider automating creating the screen xml. But be very, very careful. I've seen some projects which have used automatically generated screens and they've made it work ok - but definitely a major health warning any time you don't use OPM to generate an OPM component.
So... it is possible to do this manually - but you're probably going to want to get some automation involved.