Competition, and shifting to local tastes are the major reasons (notice an increased amount of varying sides and salads at most places). There is also speed of food preparation and low prices. The main foods in these places are also high in fat, salt, and sugar, which are the components that make any food taste good.
There is more and more variety, especially since restaurants are working together, like Taco Bell and KFC sharing their kitchen, or in Canada, Tim Hortons and Wendy's.
Location is important in cases where nothing else is available, for example if you put a fast food joint on a university campus, there's not always many affordable alternatives. Also, since Walmarts are replacing the idea of the traditional mall, there's only one place for many shoppers to eat, since McDonalds is usually the only restaurant inside a Walmart.
According to the movie Supersize Me, advertising creates hype for kids, which is likely true. Kids go crazy for McDonalds because they offer a complete dining experience for them, like toys, and playgrounds. Even the entire restaurant looks like a toy.
But personally, I think kids like fast food because that's the best tasting food they get to eat. When I was younger, my mom would make real gourmet burgers, and home fries, so in the rare case that I was in a McDonalds, I really didn't care much for the tiny unsatisfying bland meals. I'd just go for the 49 cent cones. Lots of today's parents who "just don't have the time" to make a decent meal that doesn't involve the words "instant" or "helper" aren't able to compete with McDonalds.
I'd just like to add, however, that there's nothing wrong with having fast food every once in a while. It's like eating candy, or a bag of chips. When I was travelling to a different country once, and got food poisoning from some local food, I was able to go to their local McDonalds, and get food that did not make me sick. And it didn't need to be bad food. I just had a chicken sandwich and a milk. There's no rule saying you must get fries and a soda.