After revisiting my post I realized it was pretty much wrong and completely useless.  So, I set about to rewrite it with the help of a few folks on the forums.
function Add-WebConfigAppSetting 
{ 
     [CmdletBinding()] 
      param ( 
           [Parameter( 
                Mandatory  =   $true 
           )] 
           [ String ] 
           [ValidateNotNullOrEmpty()] 
            $Key , 
            
           [Parameter( 
                Mandatory  =   $true 
           )] 
           [ String ] 
           [ValidateNotNullOrEmpty()] 
            $Value , 
           [Parameter( 
                Mandatory  =   $true 
           )] 
           [ String ] 
           [ValidateNotNullOrEmpty()] 
            $WebConfigPath 
     ) 
      # Configure function variables 
      $timestamp   =  ( Get-Date   -Format   yyyyMMddHHmmss ) 
      # Clear variables to prevent reuse 
      $appSettings   =   $node   =   $xml   =   $null 
      # Output status to host 
      Write-Output   "Loading file contents." 
      # Load content of web.config 
      $xml   =  [ xml ](get-content( $webconfigpath )) 
      # Backup web.config 
      if ( -not ( Test-Path   "$webconfigpath.$timestamp" ))  
     { 
            # Output status to host 
            Write-Output   "Creating backup." 
            
            # Save file 
            $xml .Save( "$webconfigpath.$timestamp" ) 
     } 
      # If appSettings element does not exist  
      if ( $xml .SelectSingleNode( //configuration/appSettings )  -eq   $null ) 
     { 
            # Output status to host 
            Write-Output   The appSettings node does not exist. Adding it now. 
            
            # if child nodes do not exist create it 
            $appSettings   =   $xml .CreateElement( "appSettings" ) 
            
            # Output status to host 
            Write-Output   "The appSetting ($($key)/$($value)) does not exist. Adding it now." 
            
            # add new element called add to //configuration/appSettings 
            $node   =   $xml .CreateNode( element , add , ) 
            
            # Set attributes for new appSetting 
            $node .SetAttribute( key , $key ) 
            $node .SetAttribute( value , $value ) 
            # Add $node to //configruation/appsetting element 
           [ Void ]  $appSettings .AppendChild( $node ) 
            
            # Add $appSetting node to //configuration element 
           [ Void ]  $xml .configuration.AppendChild( $appSettings ) 
            # Output status to host 
            Write-Output   "Saving changes."    
            
            # Save changes to file 
            $xml .Save( $webconfigpath ) 
     } 
      else 
     { 
            # Output status to host 
            Write-Output   "The //configuration/appSettings element exists. Checking for children nodes." 
            
            # Gather //configuration/appSettings data 
            $appSettings   =   $xml .configuration[ appSettings ] 
            
            # Test to see if element has child nodes 
            if ( $appSettings .HasChildNodes) 
           { 
                 # Output status to host 
                 Write-Output   "The appSettings elements has children. Checking arguments against existing values." 
            
                 # Test to see if key exists.          
                 if ( $appSetting   =  ( $appSettings .ChildNodes |  Where  { $_ .key  -eq   $key })) 
                { 
                      # Output status to host 
                      Write-Output   "The element ($($key)) exists. Comparing values." 
                 
                      # Test to see if value matches 
                      if ( $appSetting .value  -eq   $value ) 
                     { 
                            # Value matches. Output status to host. 
                            Write-Output   "The key/value arguments are already set correctly." 
                     } 
                      else 
                     { 
                            # Value does not match. Attempt to update and output status to host. 
                     &