Current SQL Server services configuration
I would use Powershell for this task.  Here's a function that leverages Get-WMIObject, WQL, and some syntax to take a list of servers to analyze.

function Get-SQLServiceInfo{
    param([string[]] $servers)
    $return = @()
    $wql = "SELECT * FROM Win32_Service WHERE name like '%SQL%' and (startmode != 'Auto' or state != 'Running')"

    foreach($server in $servers){
        $return += Get-WmiObject -ComputerName $server -query $wql | select name,startmode,state
    }

    $return
}

Get-SQLServiceInfo 'localhost'


Now, there are several ways to approach the matter of scanning all your SQL instances.  I like to use Central Management Server for this task.  The code I would use looks something like this(with the call to the above function):

$CMS=’CMSSERVER’
$servers=@((dir "SQLSERVER:\SQLRegistration\Central Management Server Group\$CMS").Name)

$servers+=$cms

Get-SQLServiceInfo $cms


So you could run this report manually, or implement it in some additional code to build and email reports out to you.  And with it automated, I'd actually say you could have this run once a day instead of quarterly.