Briefly and honestly - this depends on the region. In some places, these mergers are almost accomplished, in some they have only just begun. What is interesting is that, AFAIK, these mergers are rarely totally complete: even in places which rarely use the Vocative, this case is usually not completely gone but is still used for a limited number of nouns (e.g. for names in my village, for insults in Zagreb). The same is true for the Dative and the Locative: there is often a noun or two which still keeps the accentual distinction.
Edit: here's some more detail.
Loc = Dat : typical of Štokavian (the most widespread dialect, basis of standard BCMS), the endings have merged long ago but a group of nouns (so-called accent pardigm C) kept an accentual distinction between Dat and Loc singular. This is now in the process of being lost, usually Dat assumes the accent of Loc, rarely the opposite. The only dialect that I know of which has completely merged the two cases is Zagreb dialect: a štokavianized kajkavian dialect. The dialect had earlier lost pitch accent, and when its grammar was thoroughly štokavianized during the last century it imported the merger of Dat and Loc; obviously it couldn't import the accentual distinction!
Voc = Nom: typical of Kajkavian (northwestern Croatia). I think many dialects have really lost the Vocative without trace, some haven't, though (see above). It's definitely not a productive case anymore: you can't make a Vocative out of everything.