I use this but am not sure if it is really stable:
When a user presses HOME, we get back to the home screen, and upon returning to our activity, the activity_resume is fired, but not the activity_create, in contrary to what happens when we have an orientation change (the activity_create is fired). Now, I have a process_global in a module, which is getting set to 'true' when we enter the activity_create and to 'false' when we exit the 'activity_resume'. Thus, if we get back to activity_resume after a HOME click, we have this variable set to 'false'. This is not happening if we come from an orientation change. Thus, we can exit this activity and get back to where we want to (probably a previous activity).
Now, what happens if the user stays at HOME for enough time, so that activity gets killed or loses variables (or whatever since I really dislike android's way of handling apps) ?
In this case, Erel's approach is really the best. You check time, and upon returning from HOME, you find some seconds, minutes difference (I use 2-3 minutes, simply because there is really no need for the user to stay at these activities for too long).
If you think about it, it's the same approach we're using in other external apps as well, when we want to force the user return to a panel, independently of other actions of user.
I just note that I use these two procedures, only when I have activities which should simply enter or get some data and their inactivity should really get us back to another activity.