Your tempos are too short, your long run is probably about right, but your training volume per week is too low.
I'm going to be referring to things mostly in terms of miles, so if you're Canadian or European or whatever and prefer kilometers just make the ccnversion.
I'm a big fan of the American marathoners of the 1970s and early 1980s. One year in the 70s the US had about 250 sub 220 marathoners to attest to its depth in the sport, then in 2006 it only had 23, I'm pretty sure it still has less than 100 sub 220 marathoners a year now. Also, when you factor in things like lack of pacing and support at the time (running wasn't a professional sport yet), as well as the top guys running in competitive races and going for the win rather than a fast time, guys like Frank Shorter and Bill Rodgers easily could have run around 206-207 if they ran today.
So why has the US disappeared in the marathon so to speak? The answer is that our mindset is different. First off, mentally we never even give ourselves a chance because we mentally give the win to one of the Kenyans. Secondly, we're over-thinking things. The Kenyans are still training like our 1970s runners both on the track and in the marathon. In America we over analyze it and think that everything in training has to be scientifically backed, we're afraid to push the envelope.
The truth of the matter, is that with a 1970s training mindset you may not reach that 100% of your ability due to the lack of science, but when you train that hard its impossible to not be an extremely good runner around 95-99% of your potential. So in the 1970s when every serious runner is running 140-150 miles a week with the "lazy" ones "only" doing 120 miles a week, of course they're going to be pretty good.
Considering this, I recommend a 1970s style training approach. In the 1970s everyone trained high mileage and worked extremely hard. On the track this would mean ridiculous track workouts like Jim Ryun's 40 400s or 18 800s workouts in HS, while doing 100 miles a week. In the marathon this means 20 miles a day 7 days a week, doing doubles Monday through Saturday and a 20 mile long run on Sunday.
I recently decided to stop being lazy and am doing 16-18 miles a day and here is my training schedule following the 1970s mindset:
M- 12 miles AM / 6 miles and 10 strides PM
T- speed workout with 6-10 miles of fast running volume at 20-30 sec faster per mile than marathon pace in AM / 6 miles and core work PM
W- same as Monday
T- continuous(one run) tempo on the track of 16-20km (long tempos on the track make you mentally tough) in AM / 6 miles and core work PM
F- 12 miles AM / 6 miles and core work PM
S- same as Friday
S- 2-2.5 hour long run (I'd recommend only 2 hours until 2 months away from the marathon then go longer peaking at 2 and a half hours before the taper)
Follow a plan like that and you'll be golden. In a couple years probably even sub 230 marathon. I think anyone can run sub 230 regardless of talent with enough hard work.