Although the answer above is a great explanation of what the flash() method does, to me, it did not fully answer the question but rather give a great alternative.
I personally wanted to use the flash method so I didn't have to use the session component and I found myself stuck on my flash message as well. In the cake 2.x documentation, it says that the second parameter of the flash() method is a CakePHP-relative URL. This means the following should show a message and then redirect to the index action.
$this->flash(__("Some message for the user here..."), array("action" => "index"));
My problem, and what it looks like the original poster's problem, was that it was showing you the flash message but not doing the redirect after.
I tested this thoroughly with my application and the culprit was the debug setting in core.php
The debug value has to be set to '0' in order for the redirect to take place. I do not know why this is the case but I tested it about 10 times and 10/10 when my debug settings were set to 1 or higher, I just got the flash message. If I set it to 0, everything works perfectly. This wasn't much of a concern to me since production environments should have this setting set to 0 anyway.
If anyone else has some insight as to why the redirect doesn't happen when debugging is on, please enlighten us all.
Hope this helps.