Mathematica 188 185 170 115 130 45 chars
Explanation
In earlier versions, I made a graph of positions having a chessboard distance of 1 from each other. GraphComponents then revealed the number of islands, one per component.
The present version uses MorphologicalComponents to find and number clusters of ones in the array--regions where 1's are physically contiguous. Because graphing is unnecessary, this results in a huge economy of code.
Btw, -> ([Rule]) is actually a single, dedicated character in Mathematica
Code
Max@MorphologicalComponents@d/.{"."->0,"*"->1}
How it works
d holds the data. I assumed the data are a table of data; in Mathematica that is a list of lists:
d = {{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}
<code from above goes here>
(* out *)
5
The input data, d, are converted to 1's and 0's by the replacement
/.{"."->0,"*"->1}
where /. is an infix form of ReplaceAll followed by replacement rules.
The picture below shows a some steps the approach uses. The input matrix contains only 1's and 0's. The output matrix labels each morphological cluster with a number. (I wrapped both the input and output matrices in MatrixForm to highlight their two dimensional structure.)
Max returns the largest value in the output matrix, which is the number of clusters (i.e. islands).

Displaying the Islands
Colorize will color each island uniquely.

*island – Claudiu Aug 14 '12 at 4:59*s are also islands. – Claudiu Aug 16 '12 at 21:13