I don't know if it's possible (but would like to see a query solution).
There is one problem with your setup: If an entry gets a "substantial update", you can't make a correction afterwards, since it would become the latest item again.
I propose you write a plugin which would:
.
Quick-and-Dirty example:
public function init()
{
parent::init();
//Event: onBeforeSaveEntry
craft()->entries->onBeforeSaveEntry = function(Event $event) {
//Check if its the right section
if ( $event->entry->section == 'news' ) {
//Check if the lightswitch-field is "on"
if ( $event->entry->lightswitch_field_handle == 1 ) {
//Set postDate to current date
$event->entry->postDate = $event->entry->dateUpdated;
//Set Lightswitch-filed to "off"
$event->entry->lightswitch_field_handle = 0;
}
}
//Return
return $event;
};
}
If you add this function to your primary plugin class and sort your entries by postDate
it should work just like you want.