Yeah. Obviously, eventually any individual hash algorithm will be reduced to uselessness. Hashes should really be a moving target. People shouldn't stick with them longer than they have to, and software should be designed to be flexible in this area. Since hashes are only useful for validity checking, it should be possible to move easily from one to another as new data is generated.
Of course, an ideal solution may be to start double hashing things so that you not only have to crack one hash, but two, and then make a collision string that matches BOTH. That would be a challenge.
And of course, as far as I know, even this shouldn't cause a problem with properly implemented HMACs (hash(hash(shared_secret) . hash(random_string))), since in order to properly collide with a hash, a) you need to know the hash and b) the hash needs to stay stable, and b) is not true with HMACs even if a) is.