Circle Biting
There are many approaches to generate an unstructured grid over a region. What I'm presenting here is an approach called Circle Biting that is developed according to a paper by XiangYang Li, ShangHua Teng, and Alper Ungor. In this method we first bit the boundaries by some circles, and we do it according to our spacing function. It means that we bit a circle with radius R that R is equal to our spacing function at center of that circle.
After we bit all the boundary we continue our biting by biting inner region with circles centered at intersections of previous circles and do it until there's no region to bit.
At last we have centers of bitten circles as our nodes of the grid we want to generate. So we do a delauny triangulation on the existing nodes and we have our grid.
Here you can see some examples:
1) A Homogeneous Distribution
The requested region is the region between two concentric circle.
(a) 
(b) 
(c) 
(d) 
(e) Final homogeneous grid

2) A Nonhomogeneous Distribution
The requested region is the region between two concentric circle. But now the distribution is not homogeneous and the distribution is shown in figure (f).
(f) spacing function 
(g) 
(h) 
(i) 
(j) Final nonhomogeneous grid 
For more examples and watching the progress precisely you can download the following application and example files.
Main Application 
CircleBitingViewer.exe Note: Download the below examples as input to main application. 
Examples 
Homogeneous (It should be extracted) 
Nonhomogeneous (It should be extracted after download) 