flag_activity_clear_top sólo limpia la pila si esa actividad existe previamente en la pila de actividades, así que no te sirve (http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP).
FLAG_ACTIVITY_NEW_TASK va a crear una nueva TASK, pero loginActivity va a seguir en su propia pila, lo que no creo que te interese, pues dándole a Back el usuario volverá a la loginActivity, lo que no tiene sentido.
Para iniciar DashBoard desde Register, lo que te interesa es decir que la actividad que estás iniciando va a ser la Root de nuestra Task, y que limpie todo lo demás.
Intent intentToBeNewRoot = new Intent(context, classToStart);
ComponentName cn = intentToBeNewRoot.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
context.startActivity(mainIntent);
Además, piensa que en el futuro querrás meter al tío directamente en Dashboard, y si primero vas a LoginActivity y luego lo metes en Dashboard va a quedar una transición rara. Yo te recomiendo que en el Manifest, como Activity que recibe el LAUNCHER, crees una actividad con un Theme sin display. Esto es lo que tengo yo
<style name="NoDisplay" parent="Theme.AppCompat">
<item name="android:windowBackground">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowNoDisplay">true</item>
</style>
Dentro de esta actividad compruebas si el usuario está logueado o no, y entonces usas el código del primer punto para iniciar la Activity que será la principal de nuestra Task