DS1 has a hot cross bun, plus a sausage or bacon sandwich for breakfast every morning (plus whatever crap he can lay his hands on, sometimes)
At school, he has a ham sandwich every day except Friday, which is fish and chips day.
When we go out for the day, he'll only eat a home made ham and cucumber sandwich or a M&S salmon and cucumber sandwich. Some places sell burgers that he will eat but if mayo is mentioned on the menu with no explicit promise that you can ask for it to be left out, he won't go there. He won't ask for anything off menu, anywhere, which is really bloody limiting when there isn't a M&S with salmon and cucumber sarnies in stock!
Meals for the past few nights:
Tonight: M&S chicken provencal, chopped small and served with pasta
Last night: Pasta with half a jar of M&S bolognese sauce, with broccoli. Salad also served but he pulled a face and left most of it.
Saturday night: The same, minus the salad.
Friday:runny fried egg and chips, with sweetcorn
Thursday 2 chipolatas with garlic bread, cucumber and tomatoes. We had all sorts as a birthday buffet, but wouldn't touch any of it and left the piece of breaded chicken I served him.
Wednesday: M&S spag bol
He's nearly 12 and growing like a weed and eats non-stop, but it's all bread, pasta and biscuits. Every now and again he goes through a phase when his tastes contract right down to very little and he seems to be in one of those - a lot of angrily refused meals (he didn't eat lunch on Sunday because the soup was "too hot" and the sandwich had the "wrong" kind of bread). This time last year, I cooked him pasta for dinner every night for 3 months because he refused to eat anything else, but then he got bored of pasta.
You're not a bad mum. All you can do is serve reasonably balanced meals (which you are doing) and gently try to push the boundaries outwards.
My 9yo won't touch veg and will only eat cooked fruit and baked beans have to be cooked in a pan, not the microwave, or else he'll not touch them. He's far less frustrating to feed, though, as he'll go for a slab of meat or fish, any time, so long as it's served with chips. He had rib-eye steak, last night!