[My first counterexample was based on a misinterpretation of
the edge weights; now removed as irrelevant (but this explains the comments below). 
Counterexample to a correct interpretation follows.]
<hr />
<b>Added.</b> (30Jul11). 
Sorry for misinterpreting.  I now see that the weight of each edge in your graph is the Euclidean length
of the edge times the lower weight of the region to either side.
Here is an example where I believe the algorithm fails, where I use $w$ for weight and $l$ for length.
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
![shortest 2][2]
<br />
Your algorithm would select the purple path, because its cost is $0+\frac{3}{2}+0$, 
whereas the red path
has cost about $0+\frac{\pi}{2}+0 > \frac{3}{2}$, and so is rejected by the algorithm.
(Of course I could make the red cost approach $\frac{\pi}{2}$ by increasing the number of edges
in the regular polygon; the zero weights could be $\epsilon$-weights if you want them all to be positive). I am assuming surrounding regions that lead to the weights shown being the
only relevant ones.  So the algorithm thinks passing through the mauve rectangle is best.
But the green path (not visible to your algorithm because it does not follow edges of regions)
has cost $0+1+0$.  The problem is that following the edges of a convex
region overestimates the cost of traversing through the interior of that region,
and this overestimate could lead to the algorithm choosing a nonoptimal route.

  [1]: http://cs.smith.edu/~orourke/MathOverflow/ShortestWeighted.jpg
  [2]: http://cs.smith.edu/~orourke/MathOverflow/ShortestWeighted2.jpg