Autocompleting locations
Your comments should actually give you a hint.


' Getting data from DB:
' ...
' Populate retValue list with project names:



These sound like the beginnings of good function names to me. 

Private Function GetAutocompleteItems(reader as DbDataReader) as List(Of AutocompleteItem)
    If reader.HasRows Then
        retValue = New List(Of AutocompleteItem)
        ' Populate retValue list with project names:
        Dim item As AutocompleteItem = Nothing
        While reader.Read()
            item = New AutocompleteItem()
            item.Value = reader.GetString("Location")
            item.Label = item.Value
            retValue.Add(item)
        End While
    End If

    Return retValue
End Function


Which would then be called like this.

        ' Getting data from DB:
        Using cmd As DbCommand = DbProvider.GetDbCommand(SQL, conn)
            cmd.Parameters.Add("@ClientID", DbType.Int32).Value = userData.ClientID
            cmd.Parameters.Add("@Filter", DbType.String).Value = String.Format("%{0}%", prefix)
            Using reader As DbDataReader = cmd.ExecuteReader()
                retValue = GetAutocompleteItems(reader)
            End Using
        End Using


As you can see, just extracting this one function out considerably reduced the nesting.



I don't see much else to pick on other than this.


    Finally
        conn.Close()
        conn.Dispose()
        Logger.WriteConnectionInfo("SearchDataAccess.GetLocationsAutocomplete", Logger.ConnectionActionType.Closed)
    End Try



DbConnection obviously implements IDisposable, so why not use another Using block?