Another is that the parts of the country with growing economies and lots of great jobs are generally cities with incredibly high rents. It's not easy to move halfway across the country to take an entry-level job and somehow live off that if you need to pay Bay Area / NY Area / DC Area / etc rents, and doubly so if you have a family.
This is one reason I think it's so critical to build a serious urbanist movement in US. The status quo of restrictive zoning, low building, and sky-high rents keeps hundreds of thousands of people from being able to access the places that would enable them to build better lives. If we allowed our cities to grow and invested in the transit infrastructure to keep them livable at even moderately higher densities, it could unleash a tremendous amount of prosperity.
We heavily subsidize home ownership, which creates huge disincentives for mobility. In reality we should probably tax it and subsidize renters.
We pay people to sit around in their old location rather than moving. Our "disability insurance" program is actually a giant secret welfare program for people who refuse to leave economically depressed areas. http://apps.npr.org/unfit-for-work/
We drastically restrict housing supply in economically productive areas.
Well, most of Middle America has high home-ownership rates, underwater mortgages, no public transit, gutted public education, and nearly zero public health-care. So yes, a whole lot is stopping people moving: they're broke, stuck with a mortgage, and would have to go further into debt to move, without a job offer.