Both the debugger integrated in most IDEs and standalone Flash programming applications usually verify all flashed areas. And separate tools (I occasionally use Segger J-Flash Lite) can do all steps (erase, program, verify) individually.
For the toolchain/IDE, this is usually part of the debug settings.
All the tools I dealed with lately had verify enabled by default.