Based on Brad's response I created the following controller in a plugin:
<?php
namespace Craft;
class Myplugin_SaveUserController extends BaseController
{
protected $allowAnonymous = true;
/**
* Handle the save user form request.
*/
public function actionSaveUser()
{
$this->requirePostRequest();
$email = craft()->request->getPost('email');
$userId = craft()->request->getPost('userId');
$user = craft()->users->getUserById($userId);
if ($email !== $user->email)
{
craft()->userSession->setFlash('changedEmail', 'changed email');
}
$this->forward('users/saveUser', false);
}
}
I then check for it in my template:
{% if craft.session.getFlash('changedEmail') == 'changed email' %}
This seems to do the job.
For anyone who may be using this in the future, it's worth noting that I also had to change the "action" hidden input in my form:
<input type="hidden" name="action" value="myplugin/saveUser/saveUser">
craft.session.getFlash('notice')to verify what they've done. IE, a return of "User saved." means they updated their profile. Unfortunately changing emails is optional in this profile form so I would actually need a way to validate through some sort of flash message or something that they actually changed their email (so I could conditionally display Check your email instructions). – Peter Tell Jan 06 '16 at 19:58