In my playing around with AI Javascripts, one of the ideas which occasionally occurs to me, but which I haven't had opportunity to try is this:
1. Draw a small black circle and store it as a Symbol.
2. Select a grayscale image. Filter>Create>Object Mosaic. Select Gray for the Result. This creates a Group of square vector paths, each filled with a tint of black. Ungroup.
3. This is where a Javascript would come in. The Javascript would loop through the current selection, doing this for each:
a. Get the path's fill color.
b. Get the path's X and Y positions.
c. Get the path's height and width.
d. Add an Instance of the dot Symbol.
e. Position the Instance to the path's X and Y.
f. Set the Instance's height and width to those of the path.
g. Scale the Instance about its center by the same value as the path's fill.
4. Having done this, you could then use the Replace Symbol command to swap all the Instances for Instances of any other Symbol in one go. So you could render your grayscale cow with dots made of any Symbol.
Of course, in all such fake halftone attempts, you have to bear in mind, the result is not really going to be like a true halftone. For example, in the above approach, a round dot the same size a black square is not going to give you what amounts to a 100% tint of black, because there will be gaps between adjacent black circles. (That is an oft-overlooked aspect of halftoning--dots don't just change size; they change shape, too.)
Still, it might work acceptably for some interesting effects, depending upon the original image and the amount of detail expected.
JET