Funciona bien, pero el único problema es todo lo que guardas en la base de datos. Deberías guardar nombres más cortos y específicos. Tienes que compararlo tal y como está en la base de datos. Se me ocurre que guardes una descripción corta para comparar y una larga para mostrar. En fin vez que si funciona. Maneja cortos como Site Survey o maneja una especie de código.
    
Código PHP:
Ver original- <?php 
-   
-         die("Problemas en la conexion"); 
-         die("Problemas en la seleccion de la bd"); 
- $registros = mysql_query("select id,nombre_r from asesorias", $conexion)-  or 
 
-     $categorias[] = $reg['nombre_r']; 
- } 
-   
- $sel = 'Elaboración de Términos de Referencia,Site Survey,Asesoría Pre-venta:<br>      -Listado de equipamiento.<br>      -Busqueda de nuevos productos.<br>       -Sustentación de propuestas técnicas.'; 
-   
-   
- foreach ($categorias as $lista) { 
-         echo '<input type="checkbox" name="reque[]" value="'.$lista.'" checked="yes">' . $lista . '<br />'; 
-     } else { 
-         echo '<input type="checkbox" name="reque[]" value="'.$lista.'">' . $lista . '<br />'; 
-     } 
- }