First of all, a disclaimer, the usage of 'pretérito perfecto' (se ha roto) and 'pretérito indefinido' (se rompió) varies with the region. Some regions in Spain (like Leon) and I believe most of Latin America prefer the use of 'pretérito indefinido' over 'pretérito perfecto'.
Despite having said that, here I will describe the common usage in Spain. Both 'pretérito indefinido' and 'pretérito perfecto' are used to describe events in the past. The main difference is that 'pretérito perfecto', as the present perfect in English, is used to link an event from the past to now, the present. Let's see how this applies to the sentences in your question.
A) Este verano mi vecino se rompió la pierna y no ha podido caminar por tres meses.
Sentence A is correct. It basically states that your neighbour has been unable to walk since he fractured his leg three months ago until at least today.
B) Este verano mi vecino se rompió la pierna y no pudo caminar por tres meses.
Sentence B is also correct, but the meaning is slightly different. Your neighbour fractured his leg some time ago and he was unable to walk for three months.
C) Este verano mi vecino se ha roto la pierna y no pudo caminar por tres meses.
Sentence C is incorrect, or at least I would say it is a poor choice of tense. There are at least two jarring points:
'Este verano' clashes with "se ha roto", which is 'pretérito perfecto' and thus is linking an event in the past to the present.
For the same reason, "se ha roto" also clashes with "no pudo caminar por tres meses".
D) Este verano mi vecino se ha roto la pierna y no ha podido caminar por tres meses.
Again, "Este verano" clashes with the use of 'pretérito perfecto', because 'pretérito perfecto' links to now, but it's hard to interpret "este verano" as now.