this is an interesting idea.
If I understand you correctly, you want to announce the current song as it starts, but then on the next song don't announce it until the end (actually the beginning of the song that follows it). So actually, you will be announcing two songs at once (the last song and the new song) every two songs.
This should be possible, but the solution is not obvious or trivial. As far as I know the http api for xbmc does not offer any method to get information about the previous song. Take a look at the list of methods for yourself to see if there is anything that might be useful:
http://wiki.xbmc.org/index.php?title=Web_Server_HTTP_APIProbably what you would need to do is to store the information for the current song when it starts, and then when the next song plays you can retrieve this information. To do this you can use Results.SetVar to store the value(s) in a variable and later you can use {Var.
VariableName} to retrieve the value(s).
In order to announce only at the beginning of every second song you can use another variable that toggles back and forth between true and false. When you announce a song you can set this variable to "true" and then at the beginning of the next song, if this variable is "true" then you will know that you just announced and want to skip the announcement (but still store info for later). If that is the case you can store the data and then set this toggle variable to false so that on the next song it will know to make an announcement.
I'm afraid I don't have the time right now to actually put this together for you but if I get a chance before someone else manages it, I'll give it a shot.