Whenever any of the Effects start etc they are added to the global Effects queue, so you can check to see of the queue exists and how many effects are in the queue.
if(Effect.Queues.get('global').effects.length == 0)
{
//do something else
}
Also because the Effects methods will return immediately you wont exactly know when the effect finished unless you use the afterFinish
callback like so
new Effect.Morph("thumb_id",
{
style: "height:300px;",
duration: 0.8,
afterFinish: function(effect){
//do other things when the effect is finished
//the callback is passed the effect object
//and the element it is working on is at effect.element
} });