I'm posting this bug due to lack of response on the original one - no. 768361 and additional effort I made to understand the problem.
I tested attaching VS to explorer.exe with "Automatically detect the type of code to debug" and with "Managed (v4.0, v4.5)" explicitly selected. I run tests on a windows explorer (shell extension) addin which I downloaded from http://www.codeproject.com/Articles/174369/How-to-Write-Windows-Shell-Extension-with-NET-Lang
When "Automatically ..." is selected and explorer.exe has not loaded managed code (is running in native mode), then VS2012 doesn't detect the change of type code to debug the moment the managed code is loaded, thus no breakpoint is hit.
When the explorer.exe has already loaded managed code (is running in managed mode) or with "Managed" code type explicitly selected - the breakpoints are hit.
Furthermore, debugging with VS2010 Express is working correctly (by attaching I mean adding <startprogram> and other properties to csproj file, because VS2010 Express doesn't have attaching in user interface).
I assume that the problem can be reproduced for any process that is initially running in native mode and at some point is loading managed code.
I proved that the problem is not SW EPDM-related (in the original post I was debugging SW EPDM addin) but Visual Studio 2012-related.